public static void CreatePriceScripts(PriceMap Map,
                                              SenStayPropertyIndex Units,
                                              StreamlineSeasonGroup Seasons)
        {
            var UnitIDs = Map.GetUnitIDs();

            foreach (var UnitId in UnitIDs)
            {
                var status = UnitPriceStatus.Load(UnitId);
                var prices = Map.GetPricesByUnitFilteredByStatus(
                    UnitId, Units, Seasons, status);

                var scriptCreated = PriceScripting.CreateScript(status, prices, Units, Seasons);
                if (scriptCreated == PriceScripting.ScriptStatus.NOT_CREATED)
                {
                    N.Note("PriceScript for " + UnitId + " NOT created");
                    continue;
                }
                if (scriptCreated == PriceScripting.ScriptStatus.NOT_UPDATED)
                {
                    //N.Note("PriceScript for " + UnitId + " NOT updated");
                    continue;
                }
                N.Note("PriceScript for " + UnitId + " created");
                status.TimeStamp = DateTime.UtcNow;
                status.Save();
            }
        }
示例#2
0
        public static void LoadSenStay()
        {
            var StreamlinePropertyList = StreamlinePropertyCollection.Load();

            if (StreamlinePropertyList == null)
            {
                throw new Exception("Streamline codes are not parsed yet");
            }
            Indexes.SenStay = StreamlinePropertyList.CreateIndex();
        }
        public static void ProcessSourceFile(FileInfo File,
                                             SenStayPropertyIndex Units,
                                             StreamlineSeasonGroup Seasons,
                                             PriceMap map)
        {
            N.Note("Parsing " + File.FullName);
            var priceData = CSVReader.Read4columnCSV(File.FullName);

            ExtractMap(map, priceData);
            //Temp.MoveToDirectory(File, Config.I.PriceOldSourceDirectory);
            N.Note("Moving source to the archive " + File.FullName);
        }
示例#4
0
        public static ScriptStatus CreateScript(
            UnitPriceStatus Status,
            FilteredPriceMap Prices,
            SenStayPropertyIndex Units,
            StreamlineSeasonGroup Seasons)
        {
            var script = new PriceScript()
            {
                UnitId = Status.Unit
            };
            var unitInfo = Units.GetBySenStayID(Status.Unit);

            if (unitInfo == null)
            {
                return(ScriptStatus.NOT_CREATED);
            }

            script.StreamlineEditId = unitInfo.StreamlineEditID;

            if (Status.IsNew)
            {
                script.Commands.Add(
                    new PriceScriptCommand()
                {
                    Type             = PriceScriptCommand.TYPE_SEASON_GROUP,
                    SeasonGroupID    = Seasons.ID,
                    StreamlineEditId = unitInfo.StreamlineEditID
                }
                    );
            }

            foreach (var p in Prices.Values)
            {
                script.Commands.Add(
                    new PriceScriptCommand()
                {
                    Type     = PriceScriptCommand.TYPE_PRICE,
                    Price    = p.Price,
                    SeasonId = p.SeasonId
                }
                    );
            }

            script.Generated = DateTime.UtcNow;
            if (script.Commands.Count > 0)
            {
                script.Save();
                return(ScriptStatus.CREATED);
            }
            return(ScriptStatus.NOT_UPDATED);
        }
        public FilteredPriceMap GetPricesByUnitFilteredByStatus(
            string SenStayID,
            SenStayPropertyIndex Units,
            StreamlineSeasonGroup Seasons,
            UnitPriceStatus Status)
        {
            if (!Data.ContainsKey(SenStayID))
            {
                return(null);
            }
            var prices = Data[SenStayID];

            var NewsetTimestamp = Status.LastSyncTimeStamp;
            var list            = new FilteredPriceMap();

            foreach (var p in prices)
            {
                if (p.Tiemstamp <= Status.LastSyncTimeStamp)
                {
                    continue;
                }
                var key = p.GetKey();

                if (p.Tiemstamp > NewsetTimestamp)
                {
                    NewsetTimestamp = p.Tiemstamp;
                }

                var item = PriceProcesser.Convert(p, Units, Seasons);
                if (item == null)
                {
                    continue;
                }

                if (list.ContainsKey(key))
                {
                    if (list[key].TimeStamp < p.Tiemstamp)
                    {
                        list[key] = PriceProcesser.Convert(p, Units, Seasons);
                    }
                }
                else
                {
                    list.Add(key, PriceProcesser.Convert(p, Units, Seasons));
                }
            }
            Status.LastSyncTimeStamp = NewsetTimestamp;
            return(list);
        }
        public static AdoptedDailyPrice Convert(DailyPrice p, SenStayPropertyIndex Units, StreamlineSeasonGroup Seasons)
        {
            var season = Seasons.GetSeasonByDay(p.Month, p.Day);
            var unit   = Units.GetBySenStayID(p.UnitSenStayID);

            if (unit == null || season == null)
            {
                return(null);
            }
            return(new AdoptedDailyPrice
            {
                UnitStrreamlineEditId = unit.StreamlineEditID,
                Price = p.Price,
                SeasonId = season.ID,
                TimeStamp = p.Tiemstamp
            });
        }
        public List <AdoptedDailyPrice> GetPricesByUnit(string SenStayID, SenStayPropertyIndex Units,
                                                        StreamlineSeasonGroup Seasons)
        {
            if (!Data.ContainsKey(SenStayID))
            {
                return(null);
            }
            var prices = Data[SenStayID];

            var list = new List <AdoptedDailyPrice>();

            foreach (var p in prices)
            {
                var item = PriceProcesser.Convert(p, Units, Seasons);
                if (item != null)
                {
                    list.Add(item);
                }
            }
            return(list);
        }