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());
                }
            }
        }