public async Task <IActionResult> AddLeaveType([FromBody] AddLeaveTypeManagementAc addLeaveType) { var user = await _userManager.FindByNameAsync(User.Identity.Name); return(Ok(await _leaveTypeManagementRepository.AddLeaveType(addLeaveType, user))); }
/// <summary> /// Method to add Leave type - SS /// </summary> /// <param name="addLeaveType">leave type</param> /// <param name="loggedInUser">logged in user</param> /// <returns>response</returns> public async Task <LeaveTypeManagementResponse> AddLeaveType(AddLeaveTypeManagementAc addLeaveType, ApplicationUser loggedInUser) { if (string.IsNullOrEmpty(addLeaveType.Code.Trim())) { return new LeaveTypeManagementResponse() { HasError = true, Message = "Code can't be empty", ErrorType = LeaveTypeManagementResponseType.Code } } ; else if (string.IsNullOrEmpty(addLeaveType.Name.Trim())) { return new LeaveTypeManagementResponse() { HasError = true, Message = "Code can't be empty", ErrorType = LeaveTypeManagementResponseType.Name } } ; else { var instituteId = await _instituteUserMappingHelperService.GetUserCurrentSelectedInstituteIdAsync(loggedInUser.Id, true); var assignedToCount = await _iMSDbContext.UserInstituteMappings.CountAsync(x => addLeaveType.LeaveAssignedTos.Contains(x.UserId) && x.InstituteId == instituteId); if (assignedToCount != addLeaveType.LeaveAssignedTos.Count) { return new LeaveTypeManagementResponse() { HasError = true, Message = "User not found", ErrorType = LeaveTypeManagementResponseType.LeaveAssignedTos } } ; else { if (await _iMSDbContext.LeaveTypes.AnyAsync(x => x.InstituteId == instituteId && x.Code.ToLowerInvariant() == addLeaveType.Code.ToLowerInvariant())) { return new LeaveTypeManagementResponse() { HasError = true, Message = "Leave type with same code already exist. Please use unique one", ErrorType = LeaveTypeManagementResponseType.Code } } ; else { var leaveType = new LeaveType() { Code = addLeaveType.Code, CreatedOn = DateTime.UtcNow, Description = addLeaveType.Description, InstituteId = instituteId, LeaveAssignedTypeEnum = EnumHelperService.GetValueFromDescription <LeaveAssignedTypeEnum>(addLeaveType.LeaveAssignedTypeEnumDescription), Name = addLeaveType.Name, NumberOfAllowedLeave = addLeaveType.NumberOfAllowedLeave, UpdatedById = loggedInUser.Id, UpdatedOn = DateTime.UtcNow }; _iMSDbContext.LeaveTypes.Add(leaveType); await _iMSDbContext.SaveChangesAsync(); List <LeaveAssignedTo> assignedTos = new List <LeaveAssignedTo>(); foreach (var user in addLeaveType.LeaveAssignedTos) { assignedTos.Add(new LeaveAssignedTo() { CreatedOn = DateTime.UtcNow, LeaveTypeId = leaveType.Id, UserId = user }); } using (var db = await _iMSDbContext.Database.BeginTransactionAsync()) { await _iMSDbContext.BulkInsertAsync(assignedTos); db.Commit(); } return(new LeaveTypeManagementResponse() { HasError = false, Message = "Leave type added succesfully" }); } } } }