public IResult CreateUser(UserViewModel userViewModel) { var result = new Result { Operation = Operation.Create, Status = Status.Success }; try { var duplicateUserName = _userRepository.GetFirstOrDefault(x => (x.IsActive && !x.IsDeleted) && (x.UserName == userViewModel.UserName)); var duplicateEmail = _userRepository.GetFirstOrDefault(x => (x.IsActive && !x.IsDeleted) && (x.Email == userViewModel.Email)); if (duplicateUserName != null) { result.Status = Status.Fail; result.Message = UserStatusNotification.DuplicateUserName; result.Body = null; return(result); } else if (duplicateEmail != null) { result.Status = Status.Fail; result.Message = UserStatusNotification.DuplicateEmail; result.Body = null; return(result); } else { var userModel = new Users(); userModel.MapFromViewModel(userViewModel, (ClaimsIdentity)_principal.Identity); UserRoles userRole = new UserRoles(); userRole.RoleId = userViewModel.RoleId; userRole.Role = _roleRepository.GetByID(userViewModel.RoleId); userRole.MapAuditColumns((ClaimsIdentity)_principal.Identity); _userRepository.CreateUser(userModel, userRole); userViewModel.Password = GenericHelper.DecryptPassword(userViewModel.Password); if (userModel.UserId != Guid.Empty) { MailDetailModel mailDetail = new MailDetailModel(); mailDetail.EmailId = userModel.Email; mailDetail.Subject = "Registration Confirmation"; mailDetail.Template = TemplateType.UserRegistration; mailDetail.MessageBody = userViewModel; GenericHelper.Send(mailDetail, _configuration, _hostingEnvironment); } result.Body = userModel.UserId; } } catch (Exception e) { result.Message = e.Message; result.Status = Status.Error; } return(result); }