public BaseServiceMessage AddNewAnnualLeave(int employeeId, DateTime fromDate, DateTime toDate)
        {
            EmployeeDto employeeDto = _employeeService.GetEmployee(employeeId);

            if (employeeDto == null)
            {
                return new BaseServiceMessage()
                       {
                           WasSuccess = false, Message = "That Employee Id does not exist"
                       }
            }
            ;

            List <DbContextFiles.EmployeeAnnualLeave> employeeAnnualLeaves = _annualLeaveRepository.GetAnnualLeave(employeeId, fromDate, toDate);

            // check annual leave isnt already booked
            if (employeeAnnualLeaves.Count > 0)
            {
                return new BaseServiceMessage()
                       {
                           WasSuccess = false, Message = "There is already annual leave booked within that date range"
                       }
            }
            ;

            // process date range and create Db object
            List <DbContextFiles.EmployeeAnnualLeave> annualLeaveDates = new List <DbContextFiles.EmployeeAnnualLeave>();

            foreach (DateTime day in EachDay(fromDate, toDate))
            {
                if (day.DayOfWeek == DayOfWeek.Sunday && day.DayOfWeek == DayOfWeek.Saturday)
                {
                    continue;
                }

                DbContextFiles.EmployeeAnnualLeave annualLeave = new DbContextFiles.EmployeeAnnualLeave();

                annualLeave.EmployeeId           = employeeDto.EmployeeId;
                annualLeave.AddedOnUtc           = DateTime.UtcNow;
                annualLeave.AnnualLeaveDateOnUtc = day;
                annualLeave.IsHalfDay            = false;
                annualLeaveDates.Add(annualLeave);
            }
            // update db
            return(_annualLeaveRepository.AddAnnualLeave(annualLeaveDates));
        }
        public BaseServiceMessage AddAnnualLeave(DbContextFiles.EmployeeAnnualLeave annualLeave)
        {
            Context.EmployeeAnnualLeaves.Add(annualLeave);

            bool saveDbChanges = SaveDbChanges();

            if (saveDbChanges)
            {
                return new BaseServiceMessage()
                       {
                           WasSuccess = true
                       }
            }
            ;

            return(new BaseServiceMessage()
            {
                WasSuccess = false, Message = "There was an error when trying to save to the DB"
            });
        }
Пример #3
0
        public AddAttendanceLogViewModel PopulateViewModel()
        {
            AddAttendanceLogViewModel model = new AddAttendanceLogViewModel();
            AnnualLeaveService        _annualLeaveService = new AnnualLeaveService();
            List <EmployeeDto>        employeeDtos        = _employeeRepository.GetEmployees();


            List <AttendanceLogItem> attendanceLogItems = new List <AttendanceLogItem>();

            foreach (var e in employeeDtos)
            {
                // check if employee has annual leave booked today
                DateTime startDate = DateTime.UtcNow;
                DateTime endDate   = DateTime.UtcNow;
                List <DbContextFiles.EmployeeAnnualLeave> employeeAnnualLeaves = _annualLeaveService.GetAnnualLeaveBooked(e.EmployeeId, startDate, endDate);

                int attendenceStatusIdToUse;
                AttendanceStatusDto dto = new AttendanceStatusDto();
                if (employeeAnnualLeaves.Count == 0)
                {
                    // no annual leave booked can default type to present
                    dto = _attendanceStatusService.GetAttendanceStatus(EAttendanceStatus.Present);
                    attendenceStatusIdToUse = dto?.AttendanceStatusId ?? 0;
                }
                else
                {
                    DateTime today = DateTime.UtcNow.Date;

                    DbContextFiles.EmployeeAnnualLeave employeeAnnualLeave = employeeAnnualLeaves.FirstOrDefault(x => DbFunctions.TruncateTime(x.AnnualLeaveDateOnUtc) == DbFunctions.TruncateTime(today));

                    if (employeeAnnualLeave == null)
                    {
                        continue;
                    }

                    if (employeeAnnualLeave.AnnualLeavePm == null)
                    {
                        continue;
                    }

                    if (employeeAnnualLeave.AnnualLeaveAm == null)
                    {
                        continue;
                    }

                    // todo need to write this really crap code i cant even stand to look at it but go not time to write this
                    bool?f    = false;
                    bool isAm = false;
                    bool isPm = false;

                    if (employeeAnnualLeave.AnnualLeavePm == true)
                    {
                        isPm = true;
                    }
                    if (employeeAnnualLeave.AnnualLeaveAm == true)
                    {
                        isAm = true;
                    }

                    if (isPm == true && isAm == true)
                    {
                        dto = _attendanceStatusService.GetAttendanceStatus(EAttendanceStatus.AnnualLeave);// must be a full days AL
                    }
                    else if (isPm == true)
                    {
                        dto = _attendanceStatusService.GetAttendanceStatus(EAttendanceStatus.AnnualLeavePm);
                    }
                    else
                    {
                        dto = _attendanceStatusService.GetAttendanceStatus(EAttendanceStatus.AnnualLeaveAm);
                    }


                    attendenceStatusIdToUse = dto?.AttendanceStatusId ?? 0;
                }


                AttendanceLogItem n = new AttendanceLogItem()
                {
                    EmployeeId   = e.EmployeeId,
                    EmployeeName = e.Firstname + " " + e.Surname,
                    DateAttended = DateTime.UtcNow.Date,
                    SelectedAttendanceStatusId = attendenceStatusIdToUse,
                    SelectedStatus             = dto
                };
                attendanceLogItems.Add(n);
            }

            model.AttendanceLog = attendanceLogItems;

            return(model);
        }