public async Task <IActionResult> Post([FromBody] GroupModel groupModel) { try { _logger.LogInfo("GroupController-Post: [Started] creation of group in Azure AD B2C"); if (groupModel == null) { _logger.LogError("GroupController-Post: Group Model cannot be null..."); return(NotFound()); } var client = GraphClientUtility.GetGraphServiceClient(); if (client == null) { _logger.LogError("GroupController-Post: Unable to create object for graph client "); return(NotFound()); } var groupService = new GroupService(_logger, client); if (!groupService.IsGroupModelValid(groupModel)) { _logger.LogError("GroupController-Post: Display Name || Mail Nick Name is required for creating the group on Azure AD B2C"); return(NotFound()); } var group = groupService.BuildGroup(groupModel); var newGroup = await client.Groups.Request().AddAsync(group); var newUserModel = GraphClientUtility.ConvertGraphGroupToGroupModel(newGroup, _logger); _logger.LogInfo("GroupController-Post: [Completed] creation of group in Azure AD B2C"); return(Ok(newUserModel)); } catch (Exception ex) { _logger.LogError("GroupController-Post: Exception occured...."); _logger.LogError(ex); throw ex; } }
public async Task <IActionResult> GetGroup(string id) { try { var groupModel = new GroupModel(); if (string.IsNullOrEmpty(id) || string.IsNullOrWhiteSpace(id)) { _logger.LogError("GroupController-GetGroup: Id cannot be empty"); return(BadRequest()); } _logger.LogInfo($"UGroupController-GetGroup: [Started] to get detail for group id {id} from Azure AD B2C"); var client = GraphClientUtility.GetGraphServiceClient(); if (client == null) { _logger.LogError("GroupController-GetGroup: Unable to create object for graph client"); return(NotFound()); } var group = await client.Groups[id].Request().GetAsync(); if (group != null) { _logger.LogInfo($"GroupController-GetGroup: Fetched the group detail for id {id} from Azure AD B2C"); groupModel = GraphClientUtility.ConvertGraphGroupToGroupModel(group, _logger); var members = await client.Groups[id].Members.Request().Select(e => new { e.Id }).GetAsync(); if (members != null) { groupModel.NoOfMembers = members.Count(); } var owners = await client.Groups[id].Owners.Request().Select(e => new { e.Id }).GetAsync(); if (owners != null) { groupModel.NoOfOwners = owners.Count(); } } _logger.LogInfo($"GroupController-GetGroup: [Completed] to get detail for group id {id} from Azure AD B2C"); return(Ok(groupModel)); } catch (ServiceException ex) { _logger.LogError("GroupController-GetGroup: Exception occured...."); _logger.LogError(ex); if (ex.StatusCode == HttpStatusCode.BadRequest) { return(BadRequest()); } else { return(NotFound()); } } }