コード例 #1
0
        public void OperatorIsLessOrEqualThan_WorksWell()
        {
            COPSDate data1 = new COPSDate(0, 0, 0, 1, 1, 2018);
            COPSDate data2 = new COPSDate(0, 0, 0, 1, 2, 2018);

            Assert.True(data1 <= data2);
        }
コード例 #2
0
        public bool FindArticle(long lArticle, ref bool bFind, ref COPSDate dtArtIni, ref COPSDate dtArtEnd, ref long plArtDef, ref COPSPlate pstrVehicle, ref long plCusID)
        {
            Articles articulo = null;
            bool     fnResult = false;

            try
            {
                articulo = Data.SingleOrDefault <Articles>(w => w.ART_ID == lArticle);

                dtArtIni    = new COPSDate(articulo.ART_INIDATE);
                dtArtEnd    = new COPSDate(articulo.ART_ENDDATE);
                plArtDef    = articulo.ART_DART_ID;
                pstrVehicle = new COPSPlate(articulo.ART_VEHICLEID);
                plCusID     = articulo.ART_CUS_ID;

                fnResult = true;
            }
            catch (Exception)
            {
                fnResult = false;
            }

            bFind = fnResult;

            return(fnResult);
        }
コード例 #3
0
        public virtual bool SetData(COPSMsg message)
        {
            bool result = true;

            trace.Write(TraceLevel.Debug, "CDatM::SetData");

            try
            {
                if (message == null)
                {
                    throw new ArgumentNullException(nameof(message), "Invalid input parameter");
                }

                m_iTelType    = message.GetCmd();
                m_dtHdDate    = message.GetAtt().GetOPSDate("dtx", m_dtHdDate);
                m_iIdentifier = message.GetAtt().GetInt("id", m_iIdentifier);
                m_iPriority   = message.GetAtt().GetInt("pty", m_iPriority);
                m_iInUnit     = message.GetElm().GetInt("u", m_iInUnit);
            }
            catch (Exception error)
            {
                trace.Write(TraceLevel.Error, error.ToLogString());
            }

            return(result);
        }
コード例 #4
0
        public bool Copy(CM1Group pSrcGroup)
        {
            trace?.Write(TraceLevel.Debug, "CM1Group::Copy");
            bool fnResult = true;

            try
            {
                trace     = pSrcGroup.trace;
                m_lId     = pSrcGroup.m_lId;
                m_lTypeId = pSrcGroup.m_lTypeId;
                m_dtLast  = pSrcGroup.m_dtLast.Copy();
                m_lState  = pSrcGroup.m_lState;
                //M1ComputeEx0 Attributes
                m_lAccumMoney   = pSrcGroup.m_lAccumMoney;
                m_lAccumMinutes = pSrcGroup.m_lAccumMinutes;
                //M1ComputeEx1 Attributes
                m_lEfecAccumMoney   = pSrcGroup.m_lEfecAccumMoney;
                m_lEfecAccumMinutes = pSrcGroup.m_lEfecAccumMinutes;
                m_lRealAccumMoney   = pSrcGroup.m_lRealAccumMoney;
                m_lRealAccumMinutes = pSrcGroup.m_lRealAccumMinutes;

                int i = 0;
                for (i = 0; i < CM1Constraint.CNSTR_NUM; i++)
                {
                    m_Cnstr[i].Copy(pSrcGroup.m_Cnstr[i]);
                }
            }
            catch (Exception error)
            {
                trace?.Write(TraceLevel.Error, error.ToLogString());
                fnResult = false;
            }

            return(fnResult);
        }
コード例 #5
0
        //*** DATE FUNCTIONS
        public bool IsDateOk(string pDate)
        {
            bool result = true;

            trace.Write(TraceLevel.Debug, "CDatM::IsDateOk");

            try
            {
                if (String.IsNullOrWhiteSpace(pDate))
                {
                    throw new ArgumentNullException(nameof(pDate), "Invalid input parameter");
                }

                if (pDate.Length != DEF_DATA_LEN)
                {
                    throw new ArgumentNullException(nameof(pDate), "Invalid input parameter");
                }

                COPSDate date = new COPSDate(pDate);
                return(date.IsValid());
            }
            catch (Exception error)
            {
                trace.Write(TraceLevel.Error, error.ToLogString());
            }

            return(result);
        }
コード例 #6
0
        public bool SetOutOperDateRealIni(COPSDate date)
        {
            trace.Write(TraceLevel.Debug, "CDatM1::SetOutOperDateRealIni");
            bool fnResult = true;

            try
            {
                if (date == null)
                {
                    throw new ArgumentNullException(nameof(date), "Parameter NULL");
                }

                if (!date.IsValid())
                {
                    throw new ArgumentOutOfRangeException(nameof(date), "Not a valid Date");
                }

                m_dtOutOperDateRealIni = date.Copy();
            }
            catch (Exception error)
            {
                trace.Write(TraceLevel.Error, error.ToLogString());
                fnResult = false;
            }

            return(fnResult);
        }
コード例 #7
0
        public void OperatorIsGreaterThan_WorksWell()
        {
            COPSDate data1 = new COPSDate(0, 0, 0, 1, 2, 2018);
            COPSDate data2 = new COPSDate(0, 0, 0, 1, 1, 2018);

            Assert.True(data1 > data2);
        }
コード例 #8
0
        public void CopyToChar_IfValueIsSet_ReturnStringDate()
        {
            COPSDate date = new COPSDate(00, 00, 00, 06, 01, 1985);

            string expected = "000000060185";
            string actual   = date.CopyToChar();

            Assert.Equal(expected, actual);
        }
コード例 #9
0
        public void ValueProperty_WhithInvalidValues_SetStatusToInvalid()
        {
            COPSDate date = new COPSDate(DateTime.MaxValue.ToOADate() + 1);

            COPSDateStatus expected = COPSDateStatus.Invalid;
            COPSDateStatus actual   = date.GetStatus();

            Assert.Equal(expected, actual);
        }
コード例 #10
0
        public void AnyCtor_WhithValidValues_SetStatusToValid()
        {
            COPSDate date = new COPSDate(00, 00, 00, 06, 01, 1985);

            COPSDateStatus expected = COPSDateStatus.Valid;
            COPSDateStatus actual   = date.GetStatus();

            Assert.Equal(expected, actual);
        }
コード例 #11
0
        public void EmptyCtor_SetStatusToNull()
        {
            COPSDate date = new COPSDate();

            COPSDateStatus expected = COPSDateStatus.Null;
            COPSDateStatus actual   = date.GetStatus();

            Assert.Equal(expected, actual);
        }
コード例 #12
0
        public void IsValid_ReturnExpectedValues(string dateString, bool expected)
        {
            COPSDate date = new COPSDate();

            date.Set(dateString);

            bool actual = date.IsValid();

            Assert.Equal(expected, actual);
        }
コード例 #13
0
        public void Set_WhithInvalidValues_SetStatusToInvalid()
        {
            COPSDate date = new COPSDate();

            COPSDateStatus expected = COPSDateStatus.Invalid;

            date.Set("000000000000");
            COPSDateStatus actual = date.GetStatus();

            Assert.Equal(expected, actual);
        }
コード例 #14
0
        private IEnumerable <Days> FilterByDate(COPSDate date)
        {
            if (date == null)
            {
                throw new InvalidOperationException("Invalida date");
            }
            if (!date.IsDateOkEx(trace))
            {
                throw new InvalidOperationException($"Error : Date is not Correct {date.fstrGetTraceString()}");
            }

            return(Data.Where(
                       d => d.DAY_DATE.IsValid() &&
                       d.DAY_DATE.Value.Year == date.Value.Year &&
                       d.DAY_DATE.Value.Month == date.Value.Month &&
                       d.DAY_DATE.Value.Day == date.Value.Day));
        }
コード例 #15
0
        public bool SetDate(COPSDate pDate)
        {
            bool result = true;

            trace.Write(TraceLevel.Debug, "CDatM::SetDate");

            try
            {
                m_dtHdDate = pDate.Copy() ?? throw new ArgumentNullException(nameof(pDate), "Parameter NULL");
            }
            catch (Exception error)
            {
                trace.Write(TraceLevel.Error, error.ToLogString());
                result = false;
            }

            return(result);
        }
コード例 #16
0
        private bool IsVehicleIdVIP(CDatM1 m1, ref bool isVIP, long cpmArticleDef = GlobalDefs.DEF_UNDEFINED_VALUE)
        {
            trace.Write(TraceLevel.Info, ">>IsVehicleIdVIP");
            bool fnResult = true;

            try
            {
                isVIP = false;

                COPSPlate strPlate    = m1.GetInVehicleID();
                COPSDate  odDate      = m1.GetInDate().Copy();
                long      lGroup      = m1.GetInGroup();
                long      lArticleDef = GlobalDefs.DEF_UNDEFINED_VALUE;

                tariffCalculator.FillTree();
                bool isVehicleIdVIP = database.IsVehicleIdVIP(tariffCalculator.GetTree(), ref strPlate, odDate, lGroup, ref lArticleDef, ref isVIP);
                if (!isVehicleIdVIP)
                {
                    throw new InvalidOperationException("Error getting last operation group");
                }

                if (isVIP && lArticleDef != GlobalDefs.DEF_UNDEFINED_VALUE)
                {
                    m1.SetInArticleDef((int)lArticleDef);
                }
                else if (isVIP && lArticleDef == GlobalDefs.DEF_UNDEFINED_VALUE)
                {
                    isVIP = isVIP && lArticleDef == cpmArticleDef;
                }

                m1.SetOutIsVIP(isVIP);
            }
            catch (Exception error)
            {
                trace.Write(TraceLevel.Error, error.ToLogString());
                fnResult = false;
            }


            trace.Write(TraceLevel.Info, "<<IsVehicleIdVIP");
            return(fnResult);
        }
コード例 #17
0
        public virtual void Copy(CDatM pDatM)
        {
            trace.Write(TraceLevel.Debug, "CDatM::Copy");

            try
            {
                if (pDatM == null)
                {
                    throw new ArgumentNullException(nameof(pDatM));
                }

                m_strIDMsg = pDatM.m_strIDMsg;
                // Header
                m_dwTelID = pDatM.m_dwTelID;
                // Message Attributtes
                m_iIdentifier = pDatM.m_iIdentifier;
                m_iRet        = pDatM.m_iRet;
                m_iPriority   = pDatM.m_iPriority;
                m_iInUnit     = pDatM.m_iInUnit;

                // SAX
                m_bTagAtt = pDatM.m_bTagAtt;

                m_iTelType = pDatM.m_iTelType;
                m_iMxType  = pDatM.m_iMxType;
                m_iNbError = pDatM.m_iNbError;

                m_dtHdDate = pDatM.m_dtHdDate.Copy();

                m_szHdSrc    = pDatM.m_szHdSrc;
                m_szDst      = pDatM.m_szDst;
                m_szTagValue = pDatM.m_szTagValue;
                m_szTagName  = pDatM.m_szTagName;

                m_pStatColl = pDatM.m_pStatColl;
            }
            catch (Exception error)
            {
                trace.Write(TraceLevel.Error, error.ToLogString());
            }
        }
コード例 #18
0
        public bool ChangeDates(long lTarId, long lTarNo, int nChangeType, COPSDate dtStartDate, COPSDate dtEndDate)
        {
            trace.Write(TraceLevel.Debug, "CiMD_Tariffs::ChangeDates");
            bool fnResult = true;

            try
            {
                // Find a tariff and its number
                IEnumerable <Tariffs> tariffs = Data.Where(w =>
                                                           w.TAR_ID == lTarId &&
                                                           w.TAR_NUMBER == lTarNo);
                foreach (Tariffs tariff in tariffs)
                {
                    switch (nChangeType)
                    {
                    case 1:
                        tariff.TAR_ENDDATE = dtStartDate;
                        break;

                    case 2:
                        tariff.TAR_INIDATE = dtStartDate;
                        tariff.TAR_ENDDATE = dtEndDate;
                        break;

                    case 3:
                        tariff.TAR_INIDATE = dtEndDate;
                        break;
                    }
                }
            }
            catch (Exception error)
            {
                trace.Write(TraceLevel.Error, error.ToLogString());
                fnResult = false;
            }

            return(fnResult);
        }
コード例 #19
0
        public bool ApplyCurrentOperation(long groupId, COPSDate operationDate)
        {
            trace?.Write(TraceLevel.Debug, "CM1GroupTree::ApplyCurrentOperation");
            bool fnResult = true;

            try
            {
                //m_dtOper
                CM1Group group = GetGroupFromGrpId(groupId);
                if (group == null)
                {
                    throw new InvalidOperationException("Group of operation not found in tree");
                }

                long groupIdTmp;
                while (group != null)
                {
                    groupIdTmp = group.GetGrpId();

                    group.SetState((long)M1GroupState.GRP_ON);
                    group.SetLastDate(operationDate);

                    group = GetGroupParent(groupIdTmp);
                    if (group == null)
                    {
                        trace?.Write(TraceLevel.Error, $"Group of operation ({groupId}) has no parents in tree");
                    }
                }
            }
            catch (Exception error)
            {
                trace?.Write(TraceLevel.Error, error.ToLogString());
                fnResult = false;
            }

            return(fnResult);
        }
コード例 #20
0
        public List <long> GetListTypeOfDays(COPSDate date)
        {
            trace?.Write(TraceLevel.Debug, "GetListTypeOfDays");
            List <long> fnResult = null;

            try
            {
                int dayOfWeek = date.GetDayOfWeek();

                trace?.Write(TraceLevel.Info, "QUERY : Which are the days to apply?");

                IEnumerable <DaysDef> dayTypes = Data.Where(w => w.DDAY_CODE[dayOfWeek - 1] == '1');
                fnResult = dayTypes.Select(s => s.DDAY_ID.Value).ToList();

                dayTypes.ToList().ForEach(t => LogDayResponse(t));
            }
            catch (Exception error)
            {
                trace?.Write(TraceLevel.Error, error.ToLogString());
                throw;
            }

            return(fnResult);
        }
コード例 #21
0
        public Days IsSpecialDay(COPSDate pdtDate)
        {
            trace?.Write(TraceLevel.Debug, $"IMT_Days::IsSpecialDay");
            Days fnResult = null;

            try
            {
                LoadIfIsNeeded();
                IEnumerable <Days> filteredDays = FilterByDate(pdtDate);

                string dateString = pdtDate.Value.ToShortDateString();
                trace?.Write(TraceLevel.Info, $"IsSpecialDay - QUERY : Is the Day ({dateString}) an special day ?  (QUERY TABLE DAYS)");

                fnResult = filteredDays.Any() ? filteredDays.ElementAt(0) : null;
                LogResponse(fnResult, dateString);
            }
            catch (System.Exception error)
            {
                trace?.Write(TraceLevel.Error, error.ToLogString());
                fnResult = null;
            }

            return(fnResult);
        }
コード例 #22
0
        public bool ExistTimeTable(IMT_TimeTables timetablesTable, long lTariff, long dayType, COPSDate dtOper, ref bool bBlockFound, bool bConsiderCloseInterval)
        {
            trace.Write(TraceLevel.Debug, "CiMD_Tariffs::ExistTimeTable");
            bool fnResult = true;

            try
            {
                bBlockFound = false;
                int minutes = dtOper.TimeToMinutes();

                trace.Write(TraceLevel.Info, $"QUERY : Which are the Time Table, Init Hour, End Hour for the Tariff({lTariff}) at this Hour({minutes / 60}:{minutes % 60}) for Day({dayType})?");

                int nTimIni = -1;
                int nTimEnd = -1;

                IEnumerable <Tariffs> tariffs = Data.Where(w =>
                                                           w.TAR_ID == lTariff &&
                                                           w.TAR_DDAY_ID == dayType &&
                                                           (w.TAR_INIDATE.GetStatus() == COPSDateStatus.Valid && w.TAR_INIDATE <= dtOper) &&
                                                           (w.TAR_ENDDATE.GetStatus() == COPSDateStatus.Valid && w.TAR_ENDDATE > dtOper)
                                                           );

                foreach (Tariffs tariff in tariffs)
                {
                    int nDummyTimIni = -1;
                    int nDummyTimEnd = -1;

                    Timetables foundTimeTable = timetablesTable.GetIniEndFromTimId(tariff.TAR_TIM_ID.Value);
                    trace.Write(TraceLevel.Info, $"Minutes ({minutes:D2}) TimTabIni ({foundTimeTable.TIM_INI:D2}) TimTabEnd ({foundTimeTable.TIM_END:D2})");

                    bool bGetTimetable = false;

                    if (bConsiderCloseInterval)
                    {
                        bGetTimetable = ((minutes <= nDummyTimEnd) && (minutes >= nDummyTimIni));
                    }
                    else
                    {
                        bGetTimetable = ((minutes < nDummyTimEnd) && (minutes >= nDummyTimIni));
                    }

                    if (bGetTimetable)
                    {
                        trace.Write(TraceLevel.Info, $"Interval Found Minutes {minutes / 60:D2}:{minutes % 60:D2} < {foundTimeTable.TIM_INI / 60:D2}:{foundTimeTable.TIM_INI % 60:D2}");

                        bBlockFound = true;
                        break;
                    }
                }
            }
            catch (Exception error)
            {
                trace.Write(TraceLevel.Error, error.ToLogString());
                fnResult = false;
            }

            return(fnResult);
        }
コード例 #23
0
 public bool IsDateOk(COPSDate pDate)
 {
     return(pDate.IsValid());
 }
コード例 #24
0
 public void Parse(IDataReader reader, long tableVersion)
 {
     DAY_ID      = reader.IsDBNull(0) ? 0 : reader.GetInt64(0);
     DAY_DDAY_ID = reader.IsDBNull(1) ? 0 : reader.GetInt64(1);
     DAY_DATE    = reader.IsDBNull(2) ? new COPSDate() : new COPSDate(reader.GetString(2));
 }
コード例 #25
0
 public void SetLastDate(COPSDate pdt)
 {
     m_dtLast = pdt.Copy();
 }
コード例 #26
0
 public virtual bool IterateDayTariff(CDatM1 pDatM1, stHOURLYBLOCK pstDayTariff, COPSDate pdtWork, long plWorkMoney, long plDaysChanges, bool bChangeDayInOutOfTariff, bool bDayChangeInInterval, bool bM1Plus, bool pbDayChange)
 {
     throw new NotImplementedException("");
 }
コード例 #27
0
 public bool DeleteOperations(COPSDate pdt, int iMinutes)
 {
     throw new NotImplementedException("");
 }
コード例 #28
0
 public bool GetNumberTariff(int iTariff, COPSDate pdtInDate, long plOutTimTabIni, long plOutTimTabEnd, long plStarID, bool pbFind, CTariffM1 pobjTariff)
 {
     throw new NotImplementedException("");
 }
コード例 #29
0
 public bool IsFestive(COPSDate pdtWork, IEnumerable plstFestives, bool pbFestive)
 {
     throw new NotImplementedException("");
 }
コード例 #30
0
        public bool GetTariffTimeTable(long lTariff, long dayType, COPSDate dtOper, long numDaysPassed, IMT_TimeTables timetables, bool considerCloseInterval, out Tariffs outTariff, out Timetables outTimetable)
        {
            trace.Write(TraceLevel.Debug, "IMT_Tariffs::GetTariffTimeTable");
            bool fnResult = true;

            outTariff    = null;
            outTimetable = null;


            try
            {
                Guard.IsNull(dtOper, nameof(dtOper));


                int totalMinutes = dtOper.TimeToMinutes();

                trace.Write(TraceLevel.Info, $@"QUERY: Which are the Time Table, Init Hour, End Hour  for the Tariff({lTariff}) at this Hour({totalMinutes/60:D2}:{totalMinutes%60:D2}) for Day({dayType})?");

                IEnumerable <Tariffs> tariffs = Data.Where(w =>
                                                           w.TAR_ID == lTariff &&
                                                           w.TAR_DDAY_ID == dayType &&
                                                           (w.TAR_INIDATE.GetStatus() == COPSDateStatus.Valid && w.TAR_INIDATE <= dtOper) &&
                                                           (w.TAR_ENDDATE.GetStatus() == COPSDateStatus.Valid && w.TAR_ENDDATE > dtOper)
                                                           );

                bool timtableHasBeenFound = false;

                if (tariffs.Any())
                {
                    bool bApplyTariff = false;

                    foreach (Tariffs tariff in tariffs)
                    {
                        if (numDaysPassed != GlobalDefs.DEF_UNDEFINED_VALUE)
                        {
                            bApplyTariff = (tariff.TAR_NUMDAYS_PASSED.HasValue && tariff.TAR_NUMDAYS_PASSED.Value == numDaysPassed);
                        }
                        else
                        {
                            bApplyTariff = !tariff.TAR_NUMDAYS_PASSED.HasValue;
                        }

                        if (bApplyTariff)
                        {
                            Timetables foundTimeTable = timetables.GetIniEndFromTimId(tariff.TAR_TIM_ID.Value);
                            trace.Write(TraceLevel.Info, $"Minutes ({totalMinutes:D2}) TimTabIni ({foundTimeTable.TIM_INI:D2}) TimTabEnd ({foundTimeTable.TIM_END:D2})");

                            bool getTimetable = false;

                            if (considerCloseInterval)
                            {
                                getTimetable = totalMinutes <= foundTimeTable.TIM_END && totalMinutes >= foundTimeTable.TIM_INI;
                            }
                            else
                            {
                                getTimetable = totalMinutes < foundTimeTable.TIM_END && totalMinutes >= foundTimeTable.TIM_INI;
                            }

                            if (getTimetable)
                            {
                                trace.Write(TraceLevel.Info, $"Interval Found Minutes {totalMinutes/60:D2}:{totalMinutes%60:D2} < {foundTimeTable.TIM_INI/60:D2}:{foundTimeTable.TIM_INI % 60:D2}");

                                outTariff            = tariff;
                                outTimetable         = foundTimeTable;
                                timtableHasBeenFound = true;
                                break;
                            }
                        }
                    }
                }
            }
            catch (Exception error)
            {
                trace.Write(TraceLevel.Error, error.ToLogString());
                fnResult = false;
            }

            return(fnResult);
        }