public IResult ManageApprovalEventRole(ApprovalEventRoleViewModel approvalEventRoleViewModel) { var result = new Result { Operation = Operation.Create, Status = Status.Success }; try { var eventRole = _approvalRepository.GetAllApprovalEventRole().FirstOrDefault(x => x.ApprovalEventId == approvalEventRoleViewModel.ApprovalEventId);; var existingRole = new Roles(); if (eventRole != null) { existingRole = eventRole.Role; } if (existingRole.RoleId == 0) { var users = approvalEventRoleViewModel.Users; foreach (var user in users) { var approvalEventRoleModel = new ApprovalEventRoles(); approvalEventRoleModel.MapFromViewModel(approvalEventRoleViewModel, (ClaimsIdentity)_principal.Identity); approvalEventRoleModel.UserId = user.UserId; _approvalRepository.AddApprovalEventRole(approvalEventRoleModel); } result.Body = approvalEventRoleViewModel.ApprovalEventId; } else { if (existingRole.RoleId == approvalEventRoleViewModel.RoleId) { result.Operation = Operation.Update; UpdateApprovalEventRole(approvalEventRoleViewModel); result.Body = approvalEventRoleViewModel.ApprovalEventId; } else { result.Message = ""; result.Status = Status.Fail; } } _approvalRepository.SaveChanges(); } catch (Exception e) { result.Message = e.Message; result.Status = Status.Error; } return(result); }