コード例 #1
0
        public IActionResult Process([FromBody] PayslipInput input)
        {
            try
            {
                //failed model will auto-send 400 badrequest by api
                bool isValidInput = _payslipService.ValidateInputModel(input);

                if (!isValidInput)
                {
                    ErrorResponse errorResponse = new ErrorResponse("model is invalid or violate business rules, please change the input and try again.", ErrorTypes.BusinessRuleViolation);
                    return(BadRequest(errorResponse));
                }

                PayslipOutput payslipOutput = _payslipService.GeneratePayslip(input);
                return(Ok(payslipOutput));
            }
            catch (ArgumentNullException ex)
            {
                ErrorResponse errorResponse = new ErrorResponse(ex.Message, ErrorTypes.BusinessRuleViolation);
                return(BadRequest(errorResponse));
            }
        }
コード例 #2
0
        PayslipOutput IPayslipService.GeneratePayslip(PayslipInput input)
        {
            List <WageLevel> wageLevels    = PayslipMapper.MapFromDictionaryToWageLevelModel(input.WageLevels);
            PayslipOutput    payslipOutput = new PayslipOutput
            {
                EmployeeName = input.Employee?.Name,
                ShiftOutputs = new List <ShiftOutput>()
            };

            foreach (var shift in input.Shifts)
            {
                var shiftOutput = ProcessShift(shift, wageLevels);
                payslipOutput.ShiftOutputs.Add(shiftOutput);
            }

            payslipOutput.TotalHoursWorked         = payslipOutput.ShiftOutputs.Sum(so => so.TotalHoursWorked);
            payslipOutput.TotalNormalHoursWorked   = payslipOutput.ShiftOutputs.Sum(so => so.NormalHoursWorked);
            payslipOutput.TotalOvertimeHoursWorked = payslipOutput.ShiftOutputs.Sum(so => so.OvertimeHoursWorked);
            payslipOutput.TotalEarning             = payslipOutput.ShiftOutputs.Sum(so => so.Earning);
            //init response properties
            payslipOutput.Message      = "payslip has been successfully generated";
            payslipOutput.IsSuccessful = true;
            return(payslipOutput);
        }