Пример #1
0
        public async Task <IActionResult> EditOnlyName(TimeOffRequestDTO req)
        {
            User curentUser = await _userManager.GetUserAsync(HttpContext.User);

            await requestService.UpdateAsync(req, curentUser);

            return(RedirectToAction(nameof(List)));
        }
Пример #2
0
        public Task UpdateAsync(TimeOffRequestDTO requestDTO, User user)
        {
            if (requestDTO == null)
            {
                throw new ArgumentNullException(nameof(requestDTO));
            }

            var request = unitOfWork.TimeOffRequests.Get(requestDTO.Id);

            if (request == null)
            {
                throw new EntityNotFoundException <TimeOffRequest>(requestDTO.Id);
            }

            if (IfApprovedAtLeastOnce(requestDTO.Id))
            {
                request.Note = requestDTO.Note;
            }
            else
            {
                request.StartsAt = requestDTO.StartsAt;
                request.EndsOn   = requestDTO.EndsOn;
                request.Note     = requestDTO.Note;

                if (request.TypeId != (int)requestDTO.TypeId)
                {
                    request.TypeId = (int)requestDTO.TypeId;
                    request.Policy = GetEmployeePositionTimeOffPolicyByTypeAndPosition(
                        (int)requestDTO.TypeId, user.PositionId);
                }

                var currentUsersApproveRequestId = request.Approvals.Select(i => i.UserId);
                var newUsersApproveRequestId     = requestDTO.ApproversId;

                bool isEqual = (currentUsersApproveRequestId.Count() == newUsersApproveRequestId.Count() &&
                                (!currentUsersApproveRequestId.Except(newUsersApproveRequestId).Any() ||
                                 !newUsersApproveRequestId.Except(currentUsersApproveRequestId).Any()));//equality test of current and new approvers


                if (!isEqual)
                {
                    foreach (var approval in request.Approvals)
                    {
                        unitOfWork.RequestApprovals.Delete(approval.Id);
                    }

                    CreateTimeOffRequestApprovalsForRequest(request, requestDTO.ApproversId);
                }
            }

            return(unitOfWork.SaveAsync());
        }
Пример #3
0
        public async Task <IActionResult> Create(TimeOffRequestDTO req)
        {
            User curentUser = await _userManager.GetUserAsync(HttpContext.User);

            if (ModelState.IsValid)
            {
                await requestService.CreateAsync(req, curentUser);

                return(RedirectToAction(nameof(List)));
            }

            return(Create());
        }
Пример #4
0
        public Task CreateAsync(TimeOffRequestDTO requestDTO, User user)
        {
            if (requestDTO == null)
            {
                throw new ArgumentNullException(nameof(requestDTO));
            }

            var entry = mapper.Map <TimeOffRequestDTO, TimeOffRequest>(requestDTO);

            entry.UserId = user.Id;
            entry.Policy = GetEmployeePositionTimeOffPolicyByTypeAndPosition((int)requestDTO.TypeId, user.PositionId);
            unitOfWork.TimeOffRequests.Create(entry);
            CreateTimeOffRequestApprovalsForRequest(entry, requestDTO.ApproversId);

            return(unitOfWork.SaveAsync());
        }
Пример #5
0
        public IActionResult EditGetRequest(int id)
        {
            TransferringRequestToEdit = requestService.GetById(id, true);

            return(RedirectToAction("Edit"));
        }