Example #1
0
        public DateTime CalendarHoliday(string datefull, DateTime date)
        {
            double           dateholiday        = 0;
            string           fetchxml_holiday   = @"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>
                                          <entity name='bsd_calendarholiday'>
                                            <attribute name='bsd_calendarholidayid' />
                                            <attribute name='bsd_name' />
                                            <attribute name='createdon' />
                                            <attribute name='bsd_startdate' />
                                            <attribute name='bsd_enddate' />
                                            <order attribute='bsd_name' descending='false' />
                                            <filter type='and'>
                                              <condition attribute='bsd_startdate' operator='on-or-before' value='" + datefull + @"' />
                                              <condition attribute='bsd_enddate' operator='on-or-after' value='" + datefull + @"' />
                                            </filter>
                                          </entity>
                                        </fetch>";
            EntityCollection etccalendarholiday = service.RetrieveMultiple(new FetchExpression(fetchxml_holiday));

            if (etccalendarholiday.Entities.Any())
            {
                foreach (var calendarholiday in etccalendarholiday.Entities)
                {
                    DateTime enddate = DateTime.Now;
                    if (calendarholiday.HasValue("bsd_enddate"))
                    {
                        enddate = (DateTime)calendarholiday["bsd_enddate"];
                    }
                    enddate = EnityUtilities.RetrieveLocalTimeFromUTCTime(enddate, service).Date;
                    DateTime datechange = EnityUtilities.RetrieveLocalTimeFromUTCTime(date, service).Date;
                    TimeSpan countdate  = enddate - datechange;
                    dateholiday += countdate.TotalDays;
                }
                dateholiday += 1;
            }
            date = date.AddDays(dateholiday);
            return(date);
        }
Example #2
0
        public void CheckDate(Entity suborder)
        {
            double   time_closing = getConfigTimeClosing();
            DateTime date         = DateTime.Now.AddDays(10000);

            date = (DateTime)suborder["bsd_date"];
            date = EnityUtilities.RetrieveLocalTimeFromUTCTime(date, service);
            DateTime datedistributor = date;

            date = date.AddHours(time_closing);
            //throw new Exception("time_closing: " + time_closing +"date: "+date.ToLocalTime() );
            // date = date.AddDays(1)
            //lay calendar holiday
            string datefull = date.ToString("yyyy-MM-dd");

            date = CalendarHoliday(datefull, date);


            var dayOfWeek = date.DayOfWeek;
            EntityCollection etccalendarworking = RetrieveZeroCondition("bsd_calendarworking", service);

            if (etccalendarworking.Entities.Any())
            {
                Entity calendarworking = etccalendarworking.Entities.First();
                bool   monday, tuesday, wednesday, thursday, friday, saturday, sunday;
                monday = tuesday = wednesday = thursday = friday = saturday = sunday = false;
                if (calendarworking.HasValue("bsd_monday"))
                {
                    monday = (bool)calendarworking["bsd_monday"];
                }
                if (calendarworking.HasValue("bsd_tuesday"))
                {
                    tuesday = (bool)calendarworking["bsd_tuesday"];
                }
                if (calendarworking.HasValue("bsd_wednesday"))
                {
                    wednesday = (bool)calendarworking["bsd_wednesday"];
                }
                if (calendarworking.HasValue("bsd_thursday"))
                {
                    thursday = (bool)calendarworking["bsd_thursday"];
                }
                if (calendarworking.HasValue("bsd_friday"))
                {
                    friday = (bool)calendarworking["bsd_friday"];
                }
                if (calendarworking.HasValue("bsd_saturday"))
                {
                    saturday = (bool)calendarworking["bsd_saturday"];
                }
                if (calendarworking.HasValue("bsd_sunday"))
                {
                    sunday = (bool)calendarworking["bsd_sunday"];
                }
                datefull = date.ToString("yyyy-MM-dd");
                string           fetchxml_holiday_again = string.Format(@"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>
                                           <entity name='bsd_calendarholiday'>
                                             <attribute name='bsd_calendarholidayid' />
                                             <attribute name='bsd_name' />
                                             <attribute name='createdon' />
                                             <attribute name='bsd_startdate' />
                                             <attribute name='bsd_enddate' />
                                             <order attribute='bsd_name' descending='false' />
                                             <filter type='and'>
                                               <condition attribute='bsd_startdate' operator='on-or-before' value='{0}' />
                                               <condition attribute='bsd_enddate' operator='on-or-after' value='{1}' />
                                               <condition attribute='statecode' operator='eq' value='0' />
                                             </filter>
                                           </entity>
                                         </fetch>", datefull, datefull);
                EntityCollection etccalendarholiday_again = service.RetrieveMultiple(new FetchExpression(fetchxml_holiday_again));
                if (!etccalendarholiday_again.Entities.Any())
                {
                    while (true)
                    {
                        bool dowork = CheckDate(date, dayOfWeek, sunday, monday, tuesday, wednesday, thursday, friday, saturday);
                        if (dowork)
                        {
                            break;
                        }
                        else if (!dowork)
                        {
                            date = date.AddDays(1);
                        }
                    }
                }
            }
            DateTime nowdate = EnityUtilities.RetrieveLocalTimeFromUTCTime(DateTime.Now, service);
            Entity   newdistributorshipping = new Entity(suborder.LogicalName, suborder.Id);

            newdistributorshipping["bsd_dateworkflow"] = date;
            service.Update(newdistributorshipping);
        }