예제 #1
0
        public async Task PutAsync(VacationDto vacationDto, ClaimsPrincipal user)
        {
            if (vacationDto.VacationStatusId == null)
            {
                throw new ArgumentException("");
            }

            var vacation = new Vacation
            {
                VacationId        = vacationDto.VacationId,
                StartVocationDate = vacationDto.StartVocationDate,
                EndVocationDate   = vacationDto.EndVocationDate,
                VacationStatusId  = vacationDto.VacationStatusId ?? new Guid(),
                VacationTypesId   = vacationDto.VacationTypesId,
                Comment           = vacationDto.Comment,
                EmployeeId        = vacationDto.EmployeeId,
            };

            using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                _context.Vacation.Update(vacation);

                if (vacation.VacationStatusId == _vacationStatusService.Get().FirstOrDefault(vs => vs.Name == "Approved").VacationStatusId)
                {
                    await _transactionService.CreateTransactionByVacationAsync(vacationDto, user);
                }

                await _context.SaveChangesAsync();

                scope.Complete();
            }

            await VacationStatusSendEmail(vacationDto, (await _context.Employee.FirstOrDefaultAsync(e => e.EmployeeId == vacation.EmployeeId)).WorkEmail);
        }
예제 #2
0
        public async Task PutAsync(VacationDto vacationDto, ClaimsPrincipal user)
        {
            if (vacationDto.VacationStatusId == null)
            {
                throw new ArgumentException("");
            }

            var vacation = new Vacation
            {
                VacationId        = vacationDto.VacationId,
                StartVocationDate = vacationDto.StartVocationDate,
                EndVocationDate   = vacationDto.EndVocationDate,
                VacationStatusId  = vacationDto.VacationStatusId ?? new Guid(),
                VacationTypesId   = vacationDto.VacationTypesId,
                Comment           = vacationDto.Comment,
                EmployeeId        = vacationDto.EmployeeId,
            };

            using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                _context.Vacation.Update(vacation);

                if (vacation.VacationStatusId == _vacationStatusService.Get().FirstOrDefault(vs => vs.Name == "Approved").VacationStatusId)
                {
                    await _transactionService.CreateTransactionByVacationAsync(vacationDto, user);
                }

                await _context.SaveChangesAsync();

                scope.Complete();
            }

            var workEmail = (await _context.Employee
                             .Include(t => t.Team.TeamLead)
                             .Select(
                                 e => new
            {
                e.Team.TeamLead.WorkEmail,
                e.EmployeeId
            }
                                 ).FirstOrDefaultAsync(e => e.EmployeeId == vacationDto.EmployeeId)).WorkEmail;

            if (workEmail == null)
            {
                foreach (var item in await _userManager.GetUsersInRoleAsync("Admin"))
                {
                    await VacationRequestSendEmail(vacationDto, item.Email);
                }
            }
            else
            {
                await VacationRequestSendEmail(vacationDto, workEmail);
            }
        }
 public IEnumerable <VacationStatusDto> GetVacationStatus()
 {
     return(_vacationStatusService.Get());
 }