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); }
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()); }