Example #1
0
        protected virtual void OnAddAbsence()
        {
            if (Year < _TodayYear) return;

            BzEmployeeHoliday employeeentity = GetFocusedEntity();
            if (employeeentity == null) return;


            

            DateTime minDate = _yearwrapper.BeginYearDate;
            DateTime maxDate = _yearwrapper.EndYearDate;

            if (Year == _TodayYear)
            {
                minDate = DateTime.Today;
            }

            List<DateTime> lstDates = CreateDateListFromSelectedRange();
            lstDates.Sort();

            SelectAbsenceForm dialog = new SelectAbsenceForm();
            dialog.SetMinMaxDate(minDate, maxDate);

            if (lstDates != null && lstDates.Count > 0)
            {
                dialog.BeginDate = lstDates[0];
                dialog.EndDate = lstDates[lstDates.Count - 1];
            }
            else
            {
                dialog.BeginDate = minDate ;
                dialog.EndDate = minDate.AddDays (7);
            }

            StoreDay sd = _query.StoreDays[dialog.BeginDate];

            dialog.SetOpenCloseTime(sd.OpenTime, sd.CloseTime);

            dialog.AbsenceList = _absencemanager.ToList;

            if (dialog.Execute())
            {
                List<DateTime> dates = PrepareDateList(dialog.BeginDate, dialog.EndDate, dialog.IgnoreFeast, dialog.IgnoreClosedDay, dialog.IgnoredDays);
                employeeentity.CheckDates(dates);

                Absence absence = dialog.SelectedAbsence;
                if (dates != null && dates.Count > 0)
                {
                    List<AbsenceTimeRange> newAbsences = new List<AbsenceTimeRange>();
                    
                    StoreDay storeday = null;
                    AbsenceTimeRange absencetime = null;

                    foreach (DateTime date in dates)
                    {
                        storeday = _query.StoreDays[date];
                        Debug.Assert(storeday != null);

                        absencetime = new AbsenceTimeRange();
                        absencetime.ID = ClientEnvironment.AbsenceTimePlanningService.CreateEntity().ID;
                        absencetime.Date = date;
                        absencetime.Absence = absence;
                        absencetime.AbsenceID = absence.ID;
                        absencetime.EmployeeID = employeeentity.EmployeeId;

                        if (absence.IsFixed)
                        {
                            storeday = _query.StoreDays[date];
                            absencetime.Begin = storeday.OpenTime;
                            absencetime.End = (short)(absencetime.Begin + employeeentity.GetAvgWorkingHourADay(date));//DateTimeHelper.RoundToQuoter(employeeentity.GetAvgWorkingHourADay(date)));

                        }
                        else if (absence.Value != 0)
                        {
                            absencetime.Begin = storeday.OpenTime;
                            absencetime.End = (short)(absencetime.Begin + DateTimeHelper.RoundToQuoter((int)(absence.Value*60)));
                        }
                        else
                        {
                            absencetime.Begin = DateTimeHelper.RoundToQuoter(dialog.BeginTime);
                            absencetime.End = DateTimeHelper.RoundToQuoter(dialog.EndTime);
                            
                        }
                        absencetime.Time = employeeentity.GetAbsenceTimeAsDay(absencetime.Absence, date, (absencetime.End - absencetime.Begin));
                        

                        newAbsences.Add(absencetime);
                    }
                    if (newAbsences.Count > 0)
                    {
                        employeeentity.SetAbsence(newAbsences);

                        BuildTotalSums();
                        gvAbsencePlanning.RefreshRow(gvAbsencePlanning.FocusedRowHandle);
                        Modified = true;
                    }
                }
            }

            dialog.Dispose();
        }
Example #2
0
        private void ProcessAbsence(Absence absence)
        {
            Debug.Assert(absence != null);
            if (absence == null) return;
            BzEmployeeHoliday employeeentity = GetFocusedEntity();

            List<DateTime> lstDates = CreateDateListFromSelectedRange();

            employeeentity.CheckDates(lstDates);

            Debug.Assert(employeeentity != null);
            if (employeeentity == null) return;



            if (lstDates != null && lstDates.Count > 0)
            {
                List<AbsenceTimeRange> newAbsences = new List<AbsenceTimeRange>();

                StoreDay storeday = null;
                AbsenceTimeRange absencetime = null;

                foreach (DateTime date in lstDates)
                {
                    storeday = _query.StoreDays[date];
                    Debug.Assert(storeday != null);

                    absencetime = new AbsenceTimeRange();
                    absencetime.ID = ClientEnvironment.AbsenceTimePlanningService.CreateEntity().ID;
                    absencetime.Date = date;
                    absencetime.AbsenceID = absence.ID;
                    absencetime.EmployeeID = employeeentity.EmployeeId;
                    absencetime.Absence = absence;
                    absencetime.Begin = storeday.OpenTime;
                    //absencetime.End = (short)(absencetime.Begin + DateTimeHelper.RoundToQuoter(employeeentity.GetAvgWorkingHourADay(date)));
                    absencetime.End = (short)(absencetime.Begin + employeeentity.GetAvgWorkingHourADay(date));
                    absencetime.Time = employeeentity.GetAbsenceTimeAsDay(absence, date, (absencetime.End - absencetime.Begin));


                    newAbsences.Add(absencetime);
                }
                if (newAbsences.Count > 0)
                {
                    employeeentity.SetAbsence(newAbsences);

                    BuildTotalSums();
                    gvAbsencePlanning.RefreshRow(gvAbsencePlanning.FocusedRowHandle);
                    Modified = true;
                }
            }
        }