Пример #1
0
        public async Task <ServiceResponse <object> > AddEmployeeSalary(SalaryForAddDto model)
        {
            var ToAdd = new EmployeeSalary
            {
                EmployeeId     = model.EmployeeId,
                Amount         = Convert.ToDouble(model.Amount),
                Posted         = false,
                CreatedDate    = DateTime.UtcNow,
                CreatedById    = _LoggedIn_UserID,
                SchoolBranchId = _LoggedIn_BranchID,
            };
            await _context.EmployeeSalaries.AddAsync(ToAdd);

            await _context.SaveChangesAsync();

            var ToAdd2 = new EmployeeSalaryTransaction
            {
                EmployeeId     = model.EmployeeId,
                Amount         = Convert.ToDouble(model.Amount),
                Posted         = ToAdd.Posted,
                UpdatedDate    = DateTime.UtcNow,
                UpdatedById    = _LoggedIn_UserID,
                SchoolBranchId = _LoggedIn_BranchID,
            };
            await _context.EmployeeSalaryTransactions.AddAsync(ToAdd2);

            await _context.SaveChangesAsync();

            _serviceResponse.Message = CustomMessage.Added;
            _serviceResponse.Success = true;
            return(_serviceResponse);
        }
Пример #2
0
        public async Task <ServiceResponse <object> > UpdateEmployeeSalary(SalaryForUpdateDto model)
        {
            var ObjToUpdate = _context.EmployeeSalaries.FirstOrDefault(s => s.Id.Equals(model.Id));

            if (ObjToUpdate != null)
            {
                ObjToUpdate.EmployeeId = model.EmployeeId;
                ObjToUpdate.Amount     = Convert.ToDouble(model.Amount);
                ObjToUpdate.Posted     = false;

                _context.EmployeeSalaries.Update(ObjToUpdate);
                await _context.SaveChangesAsync();
            }
            var ToAdd = new EmployeeSalaryTransaction
            {
                EmployeeId     = model.EmployeeId,
                Amount         = Convert.ToDouble(model.Amount),
                UpdatedDate    = DateTime.UtcNow,
                UpdatedById    = _LoggedIn_UserID,
                SchoolBranchId = _LoggedIn_BranchID,
            };
            await _context.EmployeeSalaryTransactions.AddAsync(ToAdd);

            await _context.SaveChangesAsync();

            _serviceResponse.Message = CustomMessage.Updated;
            _serviceResponse.Success = true;
            return(_serviceResponse);
        }
Пример #3
0
        public async Task <ServiceResponse <object> > PostSalary(SalaryForPostDto model)
        {
            var toUpdate = await _context.EmployeeSalaries.Where(m => m.Id == model.Id).FirstOrDefaultAsync();

            toUpdate.Posted = model.Posted;
            _context.EmployeeSalaries.Update(toUpdate);
            await _context.SaveChangesAsync();

            var ToAdd2 = new EmployeeSalaryTransaction
            {
                EmployeeId     = toUpdate.EmployeeId,
                Amount         = toUpdate.Amount,
                Posted         = toUpdate.Posted,
                UpdatedDate    = DateTime.UtcNow,
                UpdatedById    = _LoggedIn_UserID,
                SchoolBranchId = _LoggedIn_BranchID,
            };
            await _context.EmployeeSalaryTransactions.AddAsync(ToAdd2);

            await _context.SaveChangesAsync();

            _serviceResponse.Message = CustomMessage.Updated;
            _serviceResponse.Success = true;
            return(_serviceResponse);
        }
        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("حصل خطأ");
        }