예제 #1
0
        private bool CalculateSLAMet(Config_Information configInfo, Cleansed_SLA_Report_Details cleansedLine)
        {
            bool result = false;

            if (cleansedLine.Order_Number == "01004281015020000200")
            {
                result = false;
            }

            DateTime orderDate      = (cleansedLine.Released_Date.Year == 1 ? cleansedLine.Date_Imported : cleansedLine.Released_Date);
            DateTime shipDate       = (cleansedLine.Ship_Date.Year == 1 ? DateTime.Now.AddDays(1) : cleansedLine.Ship_Date);
            DateTime cutOffDeadline = CalculateCutOffTime(orderDate, configInfo, cleansedLine.Delivery_Option, cleansedLine.Ship_Method);
            DateTime slaDeadline    = CalculateSLATime(orderDate, configInfo, cleansedLine.Delivery_Option, cleansedLine.Ship_Method);

            if (orderDate > cutOffDeadline)
            {
                if (shipDate < slaDeadline.AddDays(1))
                {
                    result = true;
                }
            }
            else
            {
                if (shipDate < slaDeadline)
                {
                    result = true;
                }
            }

            return(result);
        }
예제 #2
0
        public IEnumerable <Cleansed_SLA_Report_Details> InterpretRawSLAData(IEnumerable <Raw_SLA_Report_Data> _rawSLAData, Config_Information configInfo)
        {
            List <Cleansed_SLA_Report_Details> list = new List <Cleansed_SLA_Report_Details>();
            Cleansed_SLA_Report_Details        cleansedLine;
            DateTime dateImported, dateReleased;

            foreach (var detail in _rawSLAData)
            {
                cleansedLine = new Cleansed_SLA_Report_Details();
                cleansedLine.Order_Number    = detail.ORDER_NUMBER;
                cleansedLine.Ship_Method     = detail.SHIP_METHOD;
                cleansedLine.Delivery_Option = (detail.DEL_OPTION == 1 ? "Express" : "Standard");
                cleansedLine.Date_Imported   = detail.DATE_IMPORTED;
                cleansedLine.Order_Date      = detail.ORDER_DATE;
                cleansedLine.Released_Date   = detail.RELEASE_DATE;
                cleansedLine.Ship_Date       = detail.SHIP_DATE;
                cleansedLine.SLA_Met         = CalculateSLAMet(configInfo, cleansedLine);

                dateImported = (detail.DATE_IMPORTED.Year == 1 ? DateTime.Now : detail.DATE_IMPORTED);
                dateReleased = (detail.RELEASE_DATE.Year == 1 ? DateTime.Now : detail.RELEASE_DATE);

                cleansedLine.Time_To_Import  = GetTimeDifference_ToTimeSpan(detail.ORDER_DATE, dateImported);
                cleansedLine.Time_To_Release = GetTimeDifference_ToTimeSpan(detail.DATE_IMPORTED, dateReleased);

                list.Add(cleansedLine);
            }

            IEnumerable <Cleansed_SLA_Report_Details> result = list;

            return(result);
        }
예제 #3
0
        public IEnumerable <Cleansed_SLA_Report_Details> FilterDateRangeFromSLADetails(IEnumerable <Cleansed_SLA_Report_Details> fullSLADetails, DateTime dateFrom, DateTime dateTo)
        {
            List <Cleansed_SLA_Report_Details> list = new List <Cleansed_SLA_Report_Details>();
            Cleansed_SLA_Report_Details        cleansedLine;
            DateTime orderDate;

            foreach (var detail in fullSLADetails)
            {
                orderDate = (detail.Released_Date.Year == 1 ? detail.Order_Date : detail.Released_Date);

                if ((orderDate >= dateFrom) && (orderDate <= dateTo))
                {
                    cleansedLine = new Cleansed_SLA_Report_Details();
                    cleansedLine.Order_Number    = detail.Order_Number;
                    cleansedLine.Ship_Method     = detail.Ship_Method;
                    cleansedLine.Delivery_Option = detail.Delivery_Option;
                    cleansedLine.Date_Imported   = detail.Date_Imported;
                    cleansedLine.Order_Date      = detail.Order_Date;
                    cleansedLine.Released_Date   = detail.Released_Date;
                    cleansedLine.Ship_Date       = detail.Ship_Date;
                    cleansedLine.SLA_Met         = detail.SLA_Met;
                    cleansedLine.Time_To_Import  = detail.Time_To_Import;
                    cleansedLine.Time_To_Release = detail.Time_To_Release;

                    list.Add(cleansedLine);
                }
            }

            IEnumerable <Cleansed_SLA_Report_Details> result = list;

            return(result);
        }
예제 #4
0
        public IEnumerable <Cleansed_SLA_Report_Details> FilterCutOffTimes(IEnumerable <Cleansed_SLA_Report_Details> fullSLADetails, Config_Information configInfo, DateTime lastDate, DateTime toDate)
        {
            List <Cleansed_SLA_Report_Details> list = new List <Cleansed_SLA_Report_Details>();
            Cleansed_SLA_Report_Details        cleansedLine;

            DateTime fromCutOffTime = lastDate.Date;
            DateTime toCutOffTime   = toDate.Date;
            DateTime orderDate;
            bool     isExemptFromView = false;

            foreach (var detail in fullSLADetails)
            {
                fromCutOffTime   = lastDate.Date;
                toCutOffTime     = toDate.Date;
                isExemptFromView = false;

                if (detail.Order_Number == "3337681")
                {
                    fromCutOffTime.AddDays(0);
                }

                if (dataAdapter.CheckForWeekend(detail.Order_Date, configInfo))
                {
                    fromCutOffTime += configInfo.Weekend_Cutoff_Time.TimeOfDay;
                    toCutOffTime   += configInfo.Weekend_Cutoff_Time.TimeOfDay;
                }
                else if (detail.Delivery_Option == "Express")
                {
                    fromCutOffTime += configInfo.Express_Cutoff_Time.TimeOfDay;
                    toCutOffTime   += configInfo.Express_Cutoff_Time.TimeOfDay;

                    if (toCutOffTime.DayOfWeek == DayOfWeek.Sunday)
                    {
                        isExemptFromView = triggerSundayExpressRule(detail.Order_Date, configInfo);
                    }
                }
                else if (detail.Ship_Method == "Home")
                {
                    fromCutOffTime += configInfo.Standard_Cutoff_Time.TimeOfDay;
                    toCutOffTime   += configInfo.Standard_Cutoff_Time.TimeOfDay;
                }
                else if (detail.Ship_Method == "Store")
                {
                    fromCutOffTime += configInfo.Store_Cutoff_Time.TimeOfDay;
                    toCutOffTime   += configInfo.Store_Cutoff_Time.TimeOfDay;
                }
                else if (detail.Ship_Method == "International")
                {
                    fromCutOffTime += configInfo.International_Cutoff_Time.TimeOfDay;
                    toCutOffTime   += configInfo.International_Cutoff_Time.TimeOfDay;
                }

                orderDate = (detail.Released_Date.Year == 1 ? detail.Order_Date : detail.Released_Date);
                if ((detail.Released_Date.Year != 1) && (!detail.Order_Number.StartsWith("E") || !detail.Order_Number.StartsWith("R")))
                {
                    if ((orderDate >= fromCutOffTime) && (orderDate <= toCutOffTime) && !isExemptFromView)
                    {
                        cleansedLine = new Cleansed_SLA_Report_Details();
                        cleansedLine.Order_Number    = detail.Order_Number;
                        cleansedLine.Ship_Method     = detail.Ship_Method;
                        cleansedLine.Delivery_Option = detail.Delivery_Option;
                        cleansedLine.Date_Imported   = detail.Date_Imported;
                        cleansedLine.Order_Date      = detail.Order_Date;
                        cleansedLine.Released_Date   = detail.Released_Date;
                        cleansedLine.Ship_Date       = detail.Ship_Date;
                        cleansedLine.SLA_Met         = detail.SLA_Met;
                        cleansedLine.Time_To_Import  = detail.Time_To_Import;
                        cleansedLine.Time_To_Release = detail.Time_To_Release;

                        list.Add(cleansedLine);
                    }
                }
            }

            IEnumerable <Cleansed_SLA_Report_Details> result = list;

            return(result);
        }