public async Task <IActionResult> CreateSalaryTransaction(CreateSalaryTransaction model) { long userId = _principalService.GetUserId(); Employee employee = _db.Employees.FirstOrDefault(x => x.Id == model.EmployeeId); //if (model.TransactionType == TransactionType.Deduct) //{ // employee.RemainingSalary = employee.RemainingSalary - model.Amount; // _db.SaveChanges(); //} //else //{ // employee.RemainingSalary = employee.RemainingSalary + model.Amount; // _db.SaveChanges(); //} double lastRemainingSalary = 0; if (_db.EmployeeSalaryTransactions.Where(x => x.EmployeeId == model.EmployeeId && x.CreatedAt.Month == DateTime.Now.Month).Any()) { lastRemainingSalary = _db.EmployeeSalaryTransactions.Where(x => x.EmployeeId == model.EmployeeId && x.CreatedAt.Month == DateTime.Now.Month).OrderBy(x => x.Id).LastOrDefault().RemainingSalary; } else { lastRemainingSalary = employee.Salary; } EmployeeSalaryTransaction transaction = new EmployeeSalaryTransaction { Amount = model.Amount, RemainingSalary = lastRemainingSalary, EmployeeId = model.EmployeeId, CreatedAt = DateTime.Now, CreatedById = userId, TransactionType = model.TransactionType, EmployeeSalaryGuid = Guid.NewGuid() }; if (model.TransactionType == TransactionType.Deduct) { transaction.RemainingSalary = lastRemainingSalary - model.Amount; } else { transaction.RemainingSalary = lastRemainingSalary + model.Amount; } await _db.EmployeeSalaryTransactions.AddAsync(transaction); var result = await _db.SaveChangesAsync(); if (result == 1) { return(new OkObjectResult(1)); } throw new Exception("حصل خطأ"); }
public async Task <IActionResult> CreateTransaction([FromBody] CreateSalaryTransaction model) { try { var result = await _employeeService.CreateSalaryTransaction(model); return(Ok(result)); } catch (Exception e) { return(BadRequest(e.Message)); } }