public async Task <IActionResult> AddUserAsync([FromBody] UserRequestDto userRequest) { try { if (userRequest != null) { var userView = new UserView { LoginName = userRequest.LoginName, Password = userRequest.Password, EmailId = userRequest.EmailId, IsActive = userRequest.IsActive }; var roleId = _roleViewRepository.GetRoles().Where(i => i.RoleName == userRequest.RoleName)?.Select(j => j.RoleId).FirstOrDefault(); if (roleId == null || roleId == 0) { return(StatusCode(400, new ErrorModel { Message = "Invalid Role", HttpStatusCode = 400 })); } userView.RoleId = roleId.Value; if (!string.IsNullOrWhiteSpace(userRequest.UserCode)) { if (userRequest.RoleName == Roles.GroupUser.ToString()) { userView.GroupName = userRequest.UserCode; } else if (userRequest.RoleName == Roles.Dealer.ToString()) { userView.DealerCode = userRequest.UserCode; } else if (userRequest.RoleName == Roles.Client.ToString()) { userView.ClientCode = userRequest.UserCode; } } if (!string.IsNullOrWhiteSpace(userView.ClientCode) && !_userViewRepository.GetClientViews().Select(i => i.ClientCode).Contains(userView.ClientCode)) { return(StatusCode(400, new ErrorModel { Message = "Invalid ClientCode", HttpStatusCode = 400 })); } if (!string.IsNullOrWhiteSpace(userView.GroupName) && !_userViewRepository.GetGroups().Select(i => i.GroupName).Contains(userView.GroupName)) { return(StatusCode(400, new ErrorModel { Message = "Invalid GroupCode", HttpStatusCode = 400 })); } if (!string.IsNullOrWhiteSpace(userView.DealerCode) && !_userViewRepository.GetDealers().Select(i => i.DealerCode).Contains(userView.DealerCode)) { return(StatusCode(400, new ErrorModel { Message = "Invalid DealerCode", HttpStatusCode = 400 })); } await _userViewRepository.AddUserAsync(userView); return(Ok()); } else { return(StatusCode(400, new ErrorModel { Message = "Bad Parameter Passed", HttpStatusCode = 400 })); } } catch (Exception ex) { return(StatusCode(500, new ErrorModel { Message = ex.Message, HttpStatusCode = 500 })); } }