/// <summary> /// <see cref="MyCompany.Vacation.Data.Repositories.IVacationRequestRepository"/> /// </summary> /// <param name="vacationRequest"><see cref="MyCompany.Vacation.Data.Repositories.IVacationRequestRepository"/></param> /// <returns><see cref="MyCompany.Vacation.Data.Repositories.IVacationRequestRepository"/></returns> public int Add(VacationRequest vacationRequest) { Employee employee; employee = _context.Employees.FirstOrDefault(e => e.EmployeeId == vacationRequest.EmployeeId); if (null == employee) { throw new Exception("Employee does not exist"); } vacationRequest.CreationDate = DateTime.Now.ToUniversalTime(); vacationRequest.LastModifiedDate = vacationRequest.CreationDate; vacationRequest.Status = VacationRequestStatus.Pending; int employeePendingVacations = GetUserPendingVacation(employee.Email, vacationRequest.From.Year); vacationRequest.NumDays = GetVacationNumDays(vacationRequest); if ((employeePendingVacations - vacationRequest.NumDays) < 0) { throw new Exception("Maximum number days exceeded"); } _context.VacationRequests.Add(vacationRequest); _context.SaveChanges(); if (_eventBusEnabled) { var dto = Mapper.Map <VacationRequestDTO>(vacationRequest); _eventBus.Publish <VacationRequestDTO>(dto, VacationActions.AddVacation); } return(vacationRequest.VacationRequestId); }
/// <summary> /// <see cref="MyCompany.Expenses.Data.Repositories.IExpenseRepository"/> /// </summary> /// <param name="expense"><see cref="MyCompany.Expenses.Data.Repositories.IExpenseRepository"/></param> /// <returns><see cref="MyCompany.Expenses.Data.Repositories.IExpenseRepository"/></returns> public async Task <int> AddAsync(Expense expense) { _context.Expenses.Add(expense); await _context.SaveChangesAsync(); if (_eventBusEnabled) { var dto = Mapper.Map <ExpenseDTO>(expense); _eventBus.Publish <ExpenseDTO>(dto, ExpenseActions.AddExpense); } return(expense.ExpenseId); }