public HttpResponseMessage Created(HttpRequestMessage request, ApplicationGroupViewModel applicationGroupVM)
        {
            return(CreateReponse(request, () =>
            {
                HttpResponseMessage response;
                if (!ModelState.IsValid)
                {
                    response = request.CreateResponse(HttpStatusCode.BadRequest, ModelState);
                }
                else
                {
                    var newApplicationGroup = new ApplicationGroup();
                    newApplicationGroup.UpdateApplicationGroup(applicationGroupVM);
                    var appGroup = _applicationGroupService.Add(newApplicationGroup);
                    _applicationGroupService.save();

                    var list = new List <ApplicationRoleGroup>();
                    foreach (var role in applicationGroupVM.Roles)
                    {
                        list.Add(new ApplicationRoleGroup()
                        {
                            RoleId = role.Id,
                            GroupId = appGroup.Id
                        });
                    }
                    _applicationRoleService.AddRoleGroup(list, appGroup.Id);
                    _applicationRoleService.Save();
                    response = request.CreateResponse(HttpStatusCode.OK, appGroup);
                }
                return response;
            }));
        }
 public HttpResponseMessage Post(HttpRequestMessage request, ApplicationGroupViewModel appGroup)
 {
     return(CreateHttpResponse(request, () =>
     {
         HttpResponseMessage response = null;
         if (!ModelState.IsValid)
         {
             request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
         }
         else
         {
             var newAppGroup = new ApplicationGroup();
             newAppGroup.UpdateApplicationGroup(appGroup);
             var result = _appGroupService.Add(newAppGroup);
             if (result.IsSuccessStatusCode)
             {
                 var newGroup = result.Content.ReadAsAsync <ApplicationGroupViewModel>().Result;
                 response = request.CreateResponse(result.StatusCode, newGroup);
             }
             else
             {
                 response = request.CreateErrorResponse(result.StatusCode, result.Content.ReadAsStringAsync().Result);
             }
         }
         return response;
     }));
 }
        public async Task <HttpResponseMessage> Update(HttpRequestMessage request, ApplicationGroupViewModel applicaionGroupViewModel)
        {
            bool statusUpdate            = false;
            HttpResponseMessage response = null;

            if (!ModelState.IsValid)
            {
                response     = request.CreateResponse(HttpStatusCode.BadRequest, ModelState);
                statusUpdate = false;
            }
            else
            {
                ApplicationGroup appGroup = new ApplicationGroup();
                appGroup.UpdateApplicationGroup(applicaionGroupViewModel);
                _applicationGroupService.Update(appGroup);
                var listRoleGroup = new List <ApplicationRoleGroup>();
                foreach (var item in applicaionGroupViewModel.Roles)
                {
                    listRoleGroup.Add(new ApplicationRoleGroup()
                    {
                        GroupId = applicaionGroupViewModel.ID,
                        RoleId  = item.Id
                    });
                }
                var role = _appRoleService.AddRolesToGroup(listRoleGroup, appGroup.ID);
                _applicationGroupService.Save();
                statusUpdate = true;
                var listRole        = _appRoleService.GetListRoleByGroupId(applicaionGroupViewModel.ID);
                var listUserInGroup = _applicationGroupService.GetListUserByGroupId(applicaionGroupViewModel.ID);
                foreach (var user in listUserInGroup)
                {
                    var listRoleName = listRole.Select(x => x.Name).ToArray();
                    foreach (var roleName in listRoleName)
                    {
                        await _appUsermanager.RemoveFromRoleAsync(user.Id, roleName);

                        await _appUsermanager.AddToRoleAsync(user.Id, roleName);
                    }
                }
                response = request.CreateResponse(HttpStatusCode.Created, statusUpdate);
            }
            return(response);
        }
 public HttpResponseMessage Create(HttpRequestMessage request, ApplicationGroupViewModel applivationGroupViewModel)
 {
     return(CreateHttpResponse(request, () =>
     {
         HttpResponseMessage response = null;
         if (!ModelState.IsValid)
         {
             response = request.CreateResponse(HttpStatusCode.BadRequest, ModelState);
         }
         else
         {
             ApplicationGroup appGroup = new ApplicationGroup();
             appGroup.UpdateApplicationGroup(applivationGroupViewModel);
             var model = _applicationGroupService.Add(appGroup);
             _applicationGroupService.Save();
             var mapperModel = Mapper.Map <ApplicationGroup, ApplicationGroupViewModel>(model);
             var listRoleGroup = new List <ApplicationRoleGroup>();
             foreach (var item in applivationGroupViewModel.Roles)
             {
                 listRoleGroup.Add(new ApplicationRoleGroup()
                 {
                     GroupId = model.ID,
                     RoleId = item.Id
                 });
             }
             var role = _appRoleService.AddRolesToGroup(listRoleGroup, mapperModel.ID);
             _appRoleService.Save();
             var listRole = _appRoleService.GetListRoleByGroupId(applivationGroupViewModel.ID);
             var listUserInGroup = _applicationGroupService.GetListUserByGroupId(applivationGroupViewModel.ID);
             foreach (var user in listUserInGroup)
             {
                 var listRoleName = listRole.Select(x => x.Name).ToArray();
                 foreach (var roleName in listRoleName)
                 {
                     _appUsermanager.AddToRoleAsync(user.Id, roleName);
                 }
             }
             response = request.CreateResponse(HttpStatusCode.Created, mapperModel);
         }
         return response;
     }));
 }
        public HttpResponseMessage Create(HttpRequestMessage request, ApplicationGroupViewModel appGroupViewModel)
        {
            if (ModelState.IsValid)
            {
                var newAppGroup = new ApplicationGroup();
                newAppGroup.UpdateApplicationGroup(appGroupViewModel);
                try
                {
                    var appGroup = _appGroupService.Add(newAppGroup);
                    _appGroupService.Save();

                    //save group
                    var listRoleGroup = new List <ApplicationRoleGroup>();
                    foreach (var role in appGroupViewModel.Roles)
                    {
                        listRoleGroup.Add(new ApplicationRoleGroup()
                        {
                            GroupId = appGroup.ID,
                            RoleId  = role.Id
                        });
                    }
                    _appRoleService.AddRolesToGroup(listRoleGroup, appGroup.ID);
                    _appRoleService.Save();

                    return(request.CreateResponse(HttpStatusCode.OK, appGroupViewModel));
                }
                catch (NameDuplicatedException dex)
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, dex.Message));
                }
            }
            else
            {
                return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }
        }