Exemplo n.º 1
0
            // DRY
            private CompensatedMissingHours CompensateHoursFromSelectedOvertimesType(
                CompensatedMissingHours compensatedMissingHours, Overtimes employeeOvertimes,
                Func <Overtimes, decimal> getOvertimesType, Action <Overtimes, decimal> setOvertimesType)
            {
                if (compensatedMissingHours.HasHoursToCompensate())
                {
                    if (getOvertimesType(employeeOvertimes) >= compensatedMissingHours.MissingHours)
                    {
                        compensatedMissingHours.CompensatedHours += compensatedMissingHours.MissingHours;

                        var leftOvertimes = getOvertimesType(employeeOvertimes) - compensatedMissingHours.MissingHours;
                        setOvertimesType(compensatedMissingHours.LeftOvertimes, leftOvertimes);

                        compensatedMissingHours.MissingHours = 0;
                    }
                    else
                    {
                        compensatedMissingHours.CompensatedHours += getOvertimesType(employeeOvertimes);
                        setOvertimesType(compensatedMissingHours.LeftOvertimes, 0);
                        compensatedMissingHours.MissingHours -= getOvertimesType(employeeOvertimes);
                    }
                }

                return(compensatedMissingHours);
            }
Exemplo n.º 2
0
            public CompensatedMissingHours CompensateMissingHours(Overtimes employeeOvertimes, decimal missingHours)
            {
                var compensatedMissingHours = new CompensatedMissingHours(missingHours);

                compensatedMissingHours =
                    CompensateHoursFromStandardOvertimes(compensatedMissingHours, employeeOvertimes);
                compensatedMissingHours =
                    CompensateHoursFromSaturdayOvertimes(compensatedMissingHours, employeeOvertimes);
                compensatedMissingHours =
                    CompensateHoursFromSundayOvertimes(compensatedMissingHours, employeeOvertimes);

                // DRY
                compensatedMissingHours = CompensateHoursFromSelectedOvertimesType(compensatedMissingHours,
                                                                                   employeeOvertimes,
                                                                                   (overtime) => overtime.StandardOvertimes,
                                                                                   (overtime, newValue) => overtime.StandardOvertimes = newValue);

                compensatedMissingHours = CompensateHoursFromSelectedOvertimesType(compensatedMissingHours,
                                                                                   employeeOvertimes,
                                                                                   (overtime) => overtime.SaturdayOvertimes,
                                                                                   (overtime, newValue) => overtime.SaturdayOvertimes = newValue);

                compensatedMissingHours = CompensateHoursFromSelectedOvertimesType(compensatedMissingHours,
                                                                                   employeeOvertimes,
                                                                                   (overtime) => overtime.SundayOvertimes,
                                                                                   (overtime, newValue) => overtime.SundayOvertimes = newValue);


                return(compensatedMissingHours);
            }
Exemplo n.º 3
0
            private CompensatedMissingHours CompensateHoursFromSundayOvertimes(
                CompensatedMissingHours compensatedMissingHours, Overtimes employeeOvertimes)
            {
                if (compensatedMissingHours.HasHoursToCompensate())
                {
                    if (employeeOvertimes.SundayOvertimes >= compensatedMissingHours.MissingHours)
                    {
                        compensatedMissingHours.CompensatedHours += compensatedMissingHours.MissingHours;
                        compensatedMissingHours.LeftOvertimes.SundayOvertimes = employeeOvertimes.SundayOvertimes -
                                                                                compensatedMissingHours.MissingHours;
                        compensatedMissingHours.MissingHours = 0;
                    }
                    else
                    {
                        compensatedMissingHours.CompensatedHours += employeeOvertimes.SundayOvertimes;
                        compensatedMissingHours.LeftOvertimes.SundayOvertimes = 0;
                        compensatedMissingHours.MissingHours -= employeeOvertimes.SundayOvertimes;
                    }
                }

                return(compensatedMissingHours);
            }