Esempio n. 1
0
        public AbsencePlanningResponse SaveAbsencePlanning(AbsencePlanningResponse response)
        {
            // diction id of empluyees which absences or holidays number changed
            Dictionary <long, object> d_ids = new Dictionary <long, object>();

            if (response.DeletedIds != null)
            {
                List <long> ids = new List <long>(response.DeletedIds);

                List <AbsenceTimePlanning> listAbsences = AbsenceTimePlanningService.FindByIDList(ids);
                if (listAbsences != null)
                {
                    foreach (AbsenceTimePlanning a in listAbsences)
                    {
                        d_ids[a.EmployeeID] = a;
                    }
                }

                AbsenceTimePlanningService.DeleteList(listAbsences);// DeleteListByID(ids);
            }

            if (response.ModifiedEntity != null)
            {
                List <EmployeeHolidaysInfo> lst = new List <EmployeeHolidaysInfo>(response.ModifiedEntity);
                EmployeeHolidaysInfoService.SaveOrUpdateList(lst);

                foreach (EmployeeHolidaysInfo o in lst)
                {
                    d_ids[o.EmployeeID] = o;
                }
            }

            if (response.NewAbsences != null)
            {
                foreach (AbsenceTimeRange a in response.NewAbsences)
                {
                    Debug.Assert(a.EmployeeID > 0);
                    Debug.Assert(a.AbsenceID > 0);
                    Debug.Assert(a.ID <= 0);

                    d_ids[a.EmployeeID] = a;

                    ClearEmployeePlanningTime(a.EmployeeID, a.Date, a.Date);
                    AbsenceTimePlanning entity = new AbsenceTimePlanning(a.Begin, a.End, a.Time, a.AbsenceID, a.EmployeeID);
                    entity.ID   = 0;
                    entity.Date = a.Date;
                    AbsenceTimePlanningService.SaveOrUpdate(entity);
                    a.ID = entity.ID;
                }
            }


            if (d_ids.Count > 0)
            {
                long[] ids = new long[d_ids.Count];
                d_ids.Keys.CopyTo(ids, 0);
                ExEmployeeHolidays.CalculateAndUpdate(ids, response.Year);
            }
            return(response);
        }
Esempio n. 2
0
 public void FillAbsencePlanningTimes(AbsenceTimePlanning entity)
 {
     if (entity != null)
     {
         Absence a = GetById(entity.AbsenceID);
         if (a != null)
         {
             entity.Absence = a;
         }
     }
 }
Esempio n. 3
0
        public List <AbsenceTimePlanning> GetAbsenceTimePlanningEntities(DateTime date)
        {
            List <AbsenceTimePlanning> resultList = new List <AbsenceTimePlanning>();
            AbsenceTimePlanning        absence    = null;

            for (int i = 0; i <= 24 * 4; i++)
            {
                if (IsAbsenceTime(i))
                {
                    if (absence != null && absence.AbsenceID != GetAbsenceId(i))
                    {
                        absence.End = (short)(i * 15);// - 15);
                        resultList.Add(absence);
                        absence = null;
                    }
                    if (absence == null)
                    {
                        absence            = new AbsenceTimePlanning();
                        absence.AbsenceID  = GetAbsenceId(i);
                        absence.Begin      = (short)(i * 15);
                        absence.Date       = date;
                        absence.EmployeeID = EmployeeId;
                    }
                }
                else
                {
                    if (absence != null)
                    {
                        absence.End = (short)(i * 15); //- 15);
                        resultList.Add(absence);
                        absence = null;
                    }
                }
            }

            return(resultList);
        }
Esempio n. 4
0
        public static bool InsertTimeRange(EmployeePlanningDay day, AbsenceTimePlanning newrange)
        {
            List <IEmployeeTimeRange> ranges = new List <IEmployeeTimeRange>();

            if (day.WorkingTimeList != null)
            {
                foreach (WorkingTimePlanning r in day.WorkingTimeList)
                {
                    ranges.Add(r);
                }
            }

            if (day.AbsenceTimeList != null)
            {
                foreach (AbsenceTimePlanning r in day.AbsenceTimeList)
                {
                    ranges.Add(r);
                }
            }
            ranges.Sort();
            // if newrange is part of exists range - return
            foreach (IEmployeeTimeRange range in ranges)
            {
                if (range.AbsenceID == newrange.AbsenceID && range.Begin <= newrange.Begin && newrange.End <= range.End)
                {
                    return(false);
                }
            }
            //ranges.Add(newrange);
            ranges.Sort();


            foreach (IEmployeeTimeRange range in ranges)
            {
                if (newrange.Begin <= range.Begin && range.End <= newrange.End)
                {
                    range.Begin = range.End;
                }
                else if (range.Begin <= newrange.Begin && newrange.Begin <= range.End)
                {
                    range.End = (short)(newrange.Begin - 1);
                }
                else if (range.Begin <= newrange.End && newrange.End <= range.End)
                {
                    range.Begin = (short)(newrange.End + 1);
                }
            }
            if (day.AbsenceTimeList == null)
            {
                day.AbsenceTimeList = new List <AbsenceTimePlanning>(1);
            }
            if (day.AbsenceTimeList != null)
            {
                day.AbsenceTimeList.Add(newrange);
            }
            for (int i = day.AbsenceTimeList.Count - 1; i >= 0; i--)
            {
                if (day.AbsenceTimeList[i].Begin >= day.AbsenceTimeList[i].End)
                {
                    day.AbsenceTimeList.RemoveAt(i);
                }
            }
            if (day.WorkingTimeList != null)
            {
                for (int i = day.WorkingTimeList.Count - 1; i >= 0; i--)
                {
                    if (day.WorkingTimeList[i].Begin >= day.WorkingTimeList[i].End)
                    {
                        day.WorkingTimeList.RemoveAt(i);
                    }
                }
            }
            for (int i = day.AbsenceTimeList.Count - 1; i >= 1; i--)
            {
                if (day.AbsenceTimeList[i].AbsenceID == day.AbsenceTimeList[i - 1].AbsenceID &&
                    day.AbsenceTimeList[i].Begin - 1 == day.AbsenceTimeList[i - 1].End)
                {
                    day.AbsenceTimeList[i - 1].End = day.AbsenceTimeList[i].End;
                    day.AbsenceTimeList.RemoveAt(i);
                }
            }
            return(true);
        }
Esempio n. 5
0
            public void AssignTo(EmployeePlanningDay employeeday)
            {
                if (employeeday.WorkingTimeList == null)
                    employeeday.WorkingTimeList = new List<WorkingTimePlanning>();
                else employeeday.WorkingTimeList.Clear();

                WorkingTimePlanning entity = null;
                foreach (WorkingTimePlanning wtp in WorkingTimes)
                {
                    entity = new WorkingTimePlanning();

                    entity.ID = 0;
                    entity.EmployeeID = employeeday.EmployeeId;
                    entity.Date = employeeday.Date;
                    entity.Begin = wtp.Begin;
                    entity.End = wtp.End;
                    entity.Time = (short)(entity.End - entity.Begin);

                    employeeday.WorkingTimeList.Add(entity);

                }

                if (employeeday.AbsenceTimeList == null)
                    employeeday.AbsenceTimeList = new List<AbsenceTimePlanning>();
                else employeeday.AbsenceTimeList.Clear();

                AbsenceTimePlanning entity1 = null;
                foreach (AbsenceTimePlanning atp in AbsenceTimes)
                {
                    entity1 = new AbsenceTimePlanning();
                    entity1.ID = 0;
                    entity1.EmployeeID = employeeday.EmployeeId;
                    entity1.Date = employeeday.Date;
                    entity1.Begin = atp.Begin;
                    entity1.End = atp.End;
                    entity1.AbsenceID = atp.AbsenceID;
                    entity1.Absence = atp.Absence;

                    employeeday.AbsenceTimeList.Add(entity1);
                }

                employeeday.Modified = true;
            }