using System; using System.Threading.Tasks; using Azure.Messaging.ServiceBus; using Microsoft.AspNetCore.Mvc; using Microsoft.Azure.Functions.Worker; using Microsoft.Azure.Functions.Worker.Http; using Microsoft.Extensions.Logging; using Newtonsoft.Json; namespace CDP { public class ContactFunctions { private readonly ILogger _logger; public ContactFunctions(ILogger logger) { _logger = logger; } [Function("GetContacts")] public async Task GetContacts([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req) { _logger.LogInformation("Get Contacts invoked"); // Convert the JSON payload to a string string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); GetContactsDto dto = JsonConvert.DeserializeObject(requestBody); if (dto == null) return new BadRequestObjectResult(new { error = true, message = "Parse error." }); string userId = Helpers.HashAndShortenText(dto.Email.ToLower()); // userId = "user-" + Helpers.HashToHex(dto.Email.ToLower()); List fr = await ContactsDB.GetUserContacts(dto.AppKey, userId); if (fr == null) { return new BadRequestObjectResult(new { error = true, message = "File not found " + dto.Email }); } return new OkObjectResult(fr); } [Function("AddContact")] public async Task AddContacts([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req) { _logger.LogInformation("Add Contacts invoked"); // Convert the JSON payload to a string string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); AddUserContactsDto addContactdto = JsonConvert.DeserializeObject(requestBody); if (addContactdto == null) return new BadRequestObjectResult(new { error = true, message = "Parse error." }); string userId = Helpers.HashAndShortenText(addContactdto.EmailId.ToLower()); ContactRecord cr = new ContactRecord(addContactdto.ContactName, addContactdto.ContactEmail, addContactdto.ContactPhone, addContactdto.ContactAddress, addContactdto.ContactCompany); Boolean resp = await ContactsDB.AppendRecord(addContactdto.AppKey, userId, cr); return new OkObjectResult(resp); } [Function("DeleteContact")] public async Task DeleteContact([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req) { _logger.LogInformation("Deleting Contact invoked"); // Convert the JSON payload to a string string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); DeleteUserContactsDto deleteContactdto = JsonConvert.DeserializeObject(requestBody); if (deleteContactdto == null) return new BadRequestObjectResult(new { error = true, message = "Parse error." }); string userId = Helpers.HashAndShortenText(deleteContactdto.UserEmail.ToLower()); Boolean resp = await ContactsDB.RemoveRecord(deleteContactdto.AppKey, userId, deleteContactdto.ContactEmail.ToLower()); await CDPDB.revokePolicies(deleteContactdto.AppKey, deleteContactdto.UserEmail.ToLower(), deleteContactdto.ContactEmail.ToLower()); return new OkObjectResult(resp); } } }