Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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);
        }