Пример #1
0
        public async Task <IActionResult> AddLeaveType([FromBody] AddLeaveTypeManagementAc addLeaveType)
        {
            var user = await _userManager.FindByNameAsync(User.Identity.Name);

            return(Ok(await _leaveTypeManagementRepository.AddLeaveType(addLeaveType, user)));
        }
Пример #2
0
        /// <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"
                        });
                    }
                }
            }
        }