using Microsoft.AspNetCore.Http; 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 GroupsFunctions { private readonly ILogger _logger; public GroupsFunctions(ILogger logger) { _logger = logger; } [Function("AddGroup")] public async Task AddGroup([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req) { _logger.LogInformation("Adding a new group invoked"); // Convert the JSON payload to a string string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); AddUserGroupDto addUserGroupDto = JsonConvert.DeserializeObject(requestBody); if (addUserGroupDto == null) return new BadRequestObjectResult(new { error = true, message = "Parse error." }); string userId = Helpers.HashAndShortenText(addUserGroupDto.EmailId.ToLower()); List contacts = new List(); foreach (Contact contact in addUserGroupDto.Contacts) { ContactRecord cr = new ContactRecord(contact.Name, contact.Email, contact.Phone, contact.Address, contact.Company); contacts.Add(cr); } Boolean resp = await GroupsDB.AppendGroup(addUserGroupDto.AppKey, userId, addUserGroupDto.GroupName, addUserGroupDto.GroupDescription, contacts); return new OkObjectResult(resp); } [Function("GetGroups")] public async Task GetGroups([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req) { _logger.LogInformation("Getting groups invoked"); // Convert the JSON payload to a string string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); GetUserGroupDto getUserGroupDto = JsonConvert.DeserializeObject(requestBody); if (getUserGroupDto == null) return new BadRequestObjectResult(new { error = true, message = "Parse error." }); string userId = Helpers.HashAndShortenText(getUserGroupDto.EmailId.ToLower()); List fr = await GroupsDB.GetUserGroups(getUserGroupDto.AppKey, userId); if (fr == null) { return new BadRequestObjectResult(new { error = true, message = "groups not found " + getUserGroupDto.EmailId }); } return new OkObjectResult(fr); } [Function("DeleteGroup")] public async Task DeleteGroup([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req) { _logger.LogInformation("Deleting Group invoked"); // Convert the JSON payload to a string string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); DeleteGroupDto deleteGroupdto = JsonConvert.DeserializeObject(requestBody); if (deleteGroupdto == null) return new BadRequestObjectResult(new { error = true, message = "Parse error." }); string userId = Helpers.HashAndShortenText(deleteGroupdto.UserEmail.ToLower()); Boolean resp = await GroupsDB.RemoveGroup(deleteGroupdto.AppKey, userId, deleteGroupdto.GroupId); return new OkObjectResult(resp); } [Function("UpdateGroup")] public async Task UpdateGroup([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req) { _logger.LogInformation("Updating Group invoked"); // Convert the JSON payload to a string string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); UpdateGroupDto updateUserGroupDto = JsonConvert.DeserializeObject(requestBody); if (updateUserGroupDto == null) return new BadRequestObjectResult(new { error = true, message = "Parse error." }); string userId = Helpers.HashAndShortenText(updateUserGroupDto.UserEmail.ToLower()); List contacts = new List(); foreach (Contact contact in updateUserGroupDto.Contacts) { ContactRecord cr = new ContactRecord(contact.Name, contact.Email, contact.Phone, contact.Address, contact.Company); contacts.Add(cr); } Boolean resp = await GroupsDB.UpdateGroup(updateUserGroupDto.AppKey, userId, updateUserGroupDto.GroupId, updateUserGroupDto.GroupName, updateUserGroupDto.GroupDescription, contacts); return new OkObjectResult(resp); } } }