Beispiel #1
0
 public ValidDaysView(WeeklyProgramSetting setting)
 {
     if (setting == null)
     {
         return;
     }
     Days = Enumerable.Range(0, 7).Select(s => new DayIndex()
     {
         Index = s
     }).ToArray();
     Days[0].IsEnabled = setting.Sunday;
     Days[1].IsEnabled = setting.Monday;
     Days[2].IsEnabled = setting.Tuesday;
     Days[3].IsEnabled = setting.Wednesday;
     Days[4].IsEnabled = setting.Thursday;
     Days[5].IsEnabled = setting.Friday;
     Days[6].IsEnabled = setting.Saturday;
 }
Beispiel #2
0
        public bool WeeklyProgramSetting_Update(WeeklyProgramSetting Setting)
        {
            var Result       = false;
            int rowsAffected = 0;

            Connector.GetProcedureResultInt32("config.WeeklyProgramSetting_Update",
                                              new IDataParameter[] {
                Connector.CreateParameter("ProgramID", Setting.ProgramID),
                Connector.CreateParameter("Sunday", Setting.Sunday),
                Connector.CreateParameter("Monday", Setting.Monday),
                Connector.CreateParameter("Tuesday", Setting.Tuesday),
                Connector.CreateParameter("Wednesday", Setting.Wednesday),
                Connector.CreateParameter("Thursday", Setting.Thursday),
                Connector.CreateParameter("Friday", Setting.Friday),
                Connector.CreateParameter("Saturday", Setting.Saturday)
            }
                                              ,
                                              out rowsAffected,
                                              out Result);

            return(Result);
        }
Beispiel #3
0
 public ProgramSettingView(ProgramSetting setting,
                           WeeklyProgramSetting Weeklysetting,
                           CyclicDayProgram cSetting,
                           ExecutionHours[] executionHours,
                           ZoneInProgram[] zones)
 {
     Name              = setting.Name;
     ProgramType       = (WaterProgramType)setting.WaterUnitID;
     ProgramID         = setting.ProgramID;
     ProgramNumber     = setting.ProgramNumber;
     Priority          = setting.Priority;
     ConfigID          = setting.ConfigID;
     IsFertilizerON    = setting.IsFertilizerON;
     Status            = (StatusType)setting.StatusID;
     FertExecutionType = (FertExecutionType)setting.FertUnitID;
     WaterFactor       = setting.WaterFactor;
     HoursExecution    = (HoursExecutionType)setting.HoursExecutionsTypeID;
     DaysExecutionType = (DaysExecutionType)setting.DaysExecutionsTypeID;
     Advanced          = new AdvancedProgramSettingView()
     {
         FinalEndDateLimit    = setting.FinalEndDateLimit.HasValue ? (long?)TimeConvertor.GetTicks(setting.FinalEndDateLimit.Value) : null,
         FinalStartDateLimit  = setting.FinalStartDateLimit.HasValue ? (long?)TimeConvertor.GetTicks(setting.FinalStartDateLimit.Value) : null,
         FinalStartHoursLimit = setting.FinalStartHoursLimit,
         FinalStopHoursLimit  = setting.FinalStopHoursLimit
     };
     HourlyCycle = new HourlyCycleView()
     {
         HourlyCyclesPerDay    = setting.HourlyCyclesPerDay,
         HourlyCyclesStartTime = setting.HourlyCyclesStartTime,
         HourlyCycleTime       = setting.HourlyCycleTime,
         HourlyCyclesStopTime  = setting.FinalStopHoursLimit
     };
     WeeklyDaysProgram = new ValidDaysView(Weeklysetting);
     CyclicDayProgram  = new CyclicDayProgramView(cSetting);
     ExecutionHours    = executionHours.Select(e => e.ExecTime).ToArray();
     ZoneInProgram     = zones.Select(z => new ZoneInProgramView(z)).ToArray();
 }
        public bool SaveSettings(string sN, long programID, ProgramSettingView setting)
        {
            var result = false;

            #region ProgramSetting

            var psetting = new ProgramSetting()
            {
                Name                  = setting.Name,
                WaterUnitID           = (byte)setting.ProgramType,
                ProgramID             = programID,
                ProgramNumber         = setting.ProgramNumber,
                Priority              = setting.Priority,
                IsFertilizerON        = setting.IsFertilizerON,
                StatusID              = (byte)setting.Status,
                FertUnitID            = (byte)setting.FertExecutionType,
                WaterFactor           = setting.WaterFactor,
                HoursExecutionsTypeID = (byte)setting.HoursExecution,
                DaysExecutionsTypeID  = (byte)setting.DaysExecutionType,
                FinalEndDateLimit     = setting.Advanced.FinalEndDateLimit.HasValue ? (DateTime?)TimeConvertor.GetDateTime(setting.Advanced.FinalEndDateLimit.Value) : null,
                FinalStartDateLimit   = setting.Advanced.FinalStartDateLimit.HasValue ? (DateTime?)TimeConvertor.GetDateTime(setting.Advanced.FinalStartDateLimit.Value) : null,
                FinalStartHoursLimit  = setting.Advanced.FinalStartHoursLimit,
                FinalStopHoursLimit   = setting.Advanced.FinalStopHoursLimit,
                HourlyCyclesPerDay    = setting.HourlyCycle.HourlyCyclesPerDay,
                HourlyCyclesStartTime = setting.HourlyCycle.HourlyCyclesStartTime,
                HourlyCyclesStopTime  = setting.HourlyCycle.HourlyCycleTime,
                HourlyCycleTime       = setting.HourlyCycle.HourlyCyclesStopTime
            };

            result = _AdminRepository.ProgramSetting_Update(psetting);

            if (!result)
            {
                return(result);
            }
            #endregion

            #region cyclicsetting

            var cyclicsetting = new CyclicDayProgram()
            {
                ProgramID    = programID,
                DaysInterval = setting.CyclicDayProgram.DaysInterval,
                StartDate    = TimeConvertor.GetDateTime(setting.CyclicDayProgram.StartDate)
            };

            result = _AdminRepository.CyclicDayProgram_Update(cyclicsetting);

            if (!result)
            {
                return(result);
            }
            #endregion

            #region ExecutionHours

            var ExecutionHours = setting.ExecutionHours.Select(e => new ExecutionHours {
                ExecTime = e
            }).ToArray();

            result = _AdminRepository.ExecutionHoursProgram_Update(programID, ExecutionHours);

            if (!result)
            {
                return(result);
            }

            #endregion

            #region WeeklyDaysProgram

            var w_days            = setting.WeeklyDaysProgram.Days;
            var WeeklyDaysProgram = new WeeklyProgramSetting()
            {
                ProgramID = programID,
                Sunday    = w_days[0].IsEnabled,
                Monday    = w_days[1].IsEnabled,
                Tuesday   = w_days[2].IsEnabled,
                Wednesday = w_days[3].IsEnabled,
                Thursday  = w_days[4].IsEnabled,
                Friday    = w_days[5].IsEnabled,
                Saturday  = w_days[6].IsEnabled
            };

            result = _AdminRepository.WeeklyProgramSetting_Update(WeeklyDaysProgram);

            if (!result)
            {
                return(result);
            }

            #endregion

            #region ZoneInProgram
            //GET All zone in program from DB
            var zone_dbList = _AdminRepository.ZonesInProgram_Get(programID).ToList();


            for (int i = 0; i < setting.ZoneInProgram.Length; i++)
            {
                var zone = setting.ZoneInProgram[i];
                zone_dbList.RemoveAll(s => s.ZoneNumber == zone.ZoneNumber);
                var zone_db = new ZoneInProgram()
                {
                    FertQuant     = zone.FertQuant,
                    FertTime      = zone.FertTime,
                    OrderNumber   = zone.OrderNumber,
                    ProgramID     = programID,
                    WaterAfter    = zone.WaterAfter,
                    WaterBefore   = zone.WaterBefore,
                    WaterDuration = zone.WaterDuration,
                    WaterPrecipitation_Duration = zone.Precipitation_Duration,
                    WaterPrecipitation_Quantity = zone.Precipitation_Quantity,
                    WaterQuantity = zone.WaterQuantity,
                    ZoneNumber    = zone.ZoneNumber
                };

                result = _AdminRepository.ZoneInProgram_Update(zone_db);
                if (!result)
                {
                    return(result);
                }
            }

            if (zone_dbList.Count > 0)
            {
                foreach (var item in zone_dbList)
                {
                    result = _AdminRepository.ZoneInProgram_Delete(item.ZoneNumber, programID);
                    if (!result)
                    {
                        return(result);
                    }
                }
            }

            #endregion

            return(true);
        }
Beispiel #5
0
        public void ProgramStory2_Test() //one program
                                         //Weekly type ,
                                         //Interval in day 2
                                         //StartTime at 7 am
                                         //Interval time 3Hour

        {
            var SN = "ff852d37-cda7-4295-a";

            if (string.IsNullOrEmpty(SN))
            {
                var device = CreateDevice();
                SN = device.SN;
            }

            var plist = Repository.DevicePrograms_Get(SN);

            Assert.IsTrue(plist != null && plist.Length > 0);
            // set only one to be active
            for (int i = 1; i < plist.Length; i++)
            {
                var p_fromList = plist[i];
                var ProgramID  = p_fromList.ProgramID;

                var program = Repository.ProgramSetting_Get(ProgramID);
                program.StatusID = 0;
                Assert.IsTrue(Repository.ProgramSetting_Update(program));
            }

            var Program = plist[0];

            Program.DaysExecutionsTypeID  = 0;
            Program.HoursExecutionsTypeID = 1;
            Program.HourlyCyclesPerDay    = 2;
            Program.HourlyCyclesStartTime = 25200; //7 am
            Program.HourlyCycleTime       = 10800; //Interval time 3  Hour
            Repository.ProgramSetting_Update(Program);
            var WeeklyDaysProgram = new WeeklyProgramSetting()
            {
                ProgramID = Program.ProgramID
            };

            WeeklyDaysProgram.Sunday    = true;
            WeeklyDaysProgram.Monday    = false;
            WeeklyDaysProgram.Thursday  = true;
            WeeklyDaysProgram.Wednesday = false;
            WeeklyDaysProgram.Thursday  = true;
            WeeklyDaysProgram.Friday    = false;
            WeeklyDaysProgram.Saturday  = true;

            Assert.IsTrue(Repository.WeeklyProgramSetting_Update(WeeklyDaysProgram));

            var list_zone = new List <ZoneInProgram>();

            for (int x = 0; x < 4; x++)
            {
                var zone = new ZoneInProgram()
                {
                    FertQuant     = 1.1m,
                    FertTime      = 12,
                    OrderNumber   = x,
                    ProgramID     = Program.ProgramID,
                    WaterAfter    = 3,
                    WaterBefore   = 5,
                    WaterDuration = 3600,
                    WaterPrecipitation_Duration = 4,
                    WaterPrecipitation_Quantity = 3,
                    WaterQuantity = 6,
                    ZoneNumber    = (byte)x,
                };
                list_zone.Add(zone);
                Assert.IsTrue(Repository.ZoneInProgram_Update(zone));
            }
        }
Beispiel #6
0
        public void ProgramStory1_Test() //one program
                                         //Weekly type ,
                                         //2  exec time - one cross-midnight

        {
            var SN = "0da20764-60b2-4081-8";

            if (string.IsNullOrEmpty(SN))
            {
                var device = CreateDevice();
                SN = device.SN;
            }

            var plist = Repository.DevicePrograms_Get(SN);

            Assert.IsTrue(plist != null && plist.Length > 0);
            // set only one to be active
            for (int i = 1; i < plist.Length; i++)
            {
                var p_fromList = plist[i];
                var ProgramID  = p_fromList.ProgramID;

                var program = Repository.ProgramSetting_Get(ProgramID);
                program.StatusID = 0;
                Assert.IsTrue(Repository.ProgramSetting_Update(program));
            }

            var Program = plist[0];

            Program.DaysExecutionsTypeID = 0;

            Repository.ProgramSetting_Update(Program);
            var WeeklyDaysProgram = new WeeklyProgramSetting()
            {
                ProgramID = Program.ProgramID
            };

            WeeklyDaysProgram.Sunday    = true;
            WeeklyDaysProgram.Monday    = false;
            WeeklyDaysProgram.Thursday  = true;
            WeeklyDaysProgram.Wednesday = false;
            WeeklyDaysProgram.Thursday  = true;
            WeeklyDaysProgram.Friday    = false;
            WeeklyDaysProgram.Saturday  = true;

            Assert.IsTrue(Repository.WeeklyProgramSetting_Update(WeeklyDaysProgram));

            var ExecutionHours = new ExecutionHours[] {
                new ExecutionHours()
                {
                    ExecTime = 28800
                },                                                                                         //8 am
                new ExecutionHours()
                {
                    ExecTime = 82800
                }                                                                                          //11 pm 23:00
                                                                                                           //{ ExecTime = 64800 } 6 pm ,18:00
            };

            Assert.IsTrue(Repository.ExecutionHoursProgram_Update(Program.ProgramID, ExecutionHours));

            var list_zone = new List <ZoneInProgram>();

            for (int x = 0; x < 4; x++)
            {
                var zone = new ZoneInProgram()
                {
                    FertQuant     = 1.1m,
                    FertTime      = 12,
                    OrderNumber   = x,
                    ProgramID     = Program.ProgramID,
                    WaterAfter    = 3,
                    WaterBefore   = 5,
                    WaterDuration = 3600,
                    WaterPrecipitation_Duration = 4,
                    WaterPrecipitation_Quantity = 3,
                    WaterQuantity = 6,
                    ZoneNumber    = (byte)x,
                };
                list_zone.Add(zone);
                Assert.IsTrue(Repository.ZoneInProgram_Update(zone));
            }
        }
Beispiel #7
0
        public void Program_Test()
        {
            var SN = "0b257467-640b-47db-a";

            if (string.IsNullOrEmpty(SN))
            {
                var device = CreateDevice();
                SN = device.SN;
            }

            var plist = Repository.DevicePrograms_Get(SN);

            Assert.IsTrue(plist != null && plist.Length > 0);
            for (int i = 0; i < plist.Length; i++)
            {
                var p_fromList = plist[i];
                var ProgramID  = p_fromList.ProgramID;

                var program = Repository.ProgramSetting_Get(ProgramID);
                isProgramEqual(program, p_fromList);

                var now = DateTime.Now;
                var CyclicDayProgram = new CyclicDayProgram()
                {
                    ProgramID = ProgramID
                };
                var WeeklyDaysProgram = new WeeklyProgramSetting()
                {
                    ProgramID = ProgramID
                };


                for (int j = 0; j < 2; j++)
                {
                    #region setting

                    program.DaysExecutionsTypeID  = (byte)(i % 2 == 0 ? 0 : 1);
                    program.FinalEndDateLimit     = now.AddMonths(i);
                    program.FinalStartDateLimit   = now.AddMonths(-i);
                    program.FinalStartHoursLimit  = i % 2 == 0 ? 10 : 100;
                    program.FinalStopHoursLimit   = i % 2 == 0 ? 2 : 234;
                    program.HourlyCyclesPerDay    = (byte)(i % 2 == 0 ? 11 : 12);
                    program.HourlyCyclesStartTime = i % 2 == 0 ? 12 : 34;
                    program.HourlyCyclesStopTime  = i % 2 == 0 ? 34 : 345;
                    program.HourlyCycleTime       = i % 2 == 0 ? 34 : 67;
                    program.HoursExecutionsTypeID = (byte)(i % 2 == 0 ? 1 : 0);
                    program.IsFertilizerON        = i % 2 == 0;
                    program.Name        = "name _" + i.ToString();
                    program.Priority    = (byte)(i % 2 == 0 ? 17 : 0);
                    program.StatusID    = (byte)(i % 2 == 0 ? 1 : 0);
                    program.WaterFactor = (byte)(i % 2 == 0 ? 45 : 78);
                    program.WaterUnitID = (byte)(i % 2 == 0 ? 0 : 1);

                    Assert.IsTrue(Repository.ProgramSetting_Update(program));
                    var program_db = Repository.ProgramSetting_Get(ProgramID);

                    isProgramEqual(program, program_db);

                    #endregion

                    #region CyclicDayProgram

                    CyclicDayProgram.DaysInterval = (byte)(2);
                    CyclicDayProgram.StartDate    = now.AddDays(i);
                    Assert.IsTrue(Repository.CyclicDayProgram_Update(CyclicDayProgram));
                    var c_db = Repository.CyclicDayProgram_Get(ProgramID);
                    Assert.IsTrue(CyclicDayProgram.DaysInterval == c_db.DaysInterval);
                    Assert.IsTrue(EqualsDate(CyclicDayProgram.StartDate, c_db.StartDate));

                    #endregion

                    #region  WeeklyDaysProgram

                    WeeklyDaysProgram.Sunday    = (i % 2 == 0);
                    WeeklyDaysProgram.Monday    = !(i % 2 == 0);
                    WeeklyDaysProgram.Thursday  = (i % 2 == 0);
                    WeeklyDaysProgram.Wednesday = !(i % 2 == 0);
                    WeeklyDaysProgram.Thursday  = (i % 2 == 0);
                    WeeklyDaysProgram.Friday    = !(i % 2 == 0);
                    WeeklyDaysProgram.Saturday  = (i % 2 == 0);

                    Assert.IsTrue(Repository.WeeklyProgramSetting_Update(WeeklyDaysProgram));
                    var w_db = Repository.WeeklyProgramSetting_Get(ProgramID);
                    Assert.IsTrue(WeeklyDaysProgram.Sunday == w_db.Sunday);
                    Assert.IsTrue(WeeklyDaysProgram.Monday == w_db.Monday);
                    Assert.IsTrue(WeeklyDaysProgram.Tuesday == w_db.Tuesday);
                    Assert.IsTrue(WeeklyDaysProgram.Wednesday == w_db.Wednesday);
                    Assert.IsTrue(WeeklyDaysProgram.Thursday == w_db.Thursday);
                    Assert.IsTrue(WeeklyDaysProgram.Friday == w_db.Friday);
                    Assert.IsTrue(WeeklyDaysProgram.Saturday == w_db.Saturday);

                    #endregion

                    #region ExecutionHours

                    var ExecutionHours = new ExecutionHours[] {
                        new ExecutionHours()
                        {
                            ExecTime = i
                        },
                        new ExecutionHours()
                        {
                            ExecTime = 10800
                        },
                        new ExecutionHours()
                        {
                            ExecTime = 28800
                        },
                        new ExecutionHours()
                        {
                            ExecTime = 50400
                        }
                    };

                    Assert.IsTrue(Repository.ExecutionHoursProgram_Update(ProgramID, ExecutionHours));

                    var e_db = Repository.ExecutionHoursProgram_Get(ProgramID);
                    Assert.IsTrue(e_db.Length == ExecutionHours.Length);
                    foreach (var item_db in e_db)
                    {
                        var item = ExecutionHours.Where(e => e.ExecTime == item_db.ExecTime).FirstOrDefault();
                        Assert.IsTrue(item != null);
                    }

                    #endregion

                    #region ZoneInProgram
                    var list_zone = new List <ZoneInProgram>();

                    for (int x = 0; x < 4; x++)
                    {
                        var zone = new ZoneInProgram()
                        {
                            FertQuant     = (i % 2 == 0 ? 0.9m : 1.1m),
                            FertTime      = (i % 2 == 0 ? 11 : 12),
                            OrderNumber   = x,
                            ProgramID     = ProgramID,
                            WaterAfter    = (i % 2 == 0 ? 3 : 4),
                            WaterBefore   = (i % 2 == 0 ? 2 : 5),
                            WaterDuration = (i % 2 == 0 ? 23 : 34),
                            WaterPrecipitation_Duration = (i % 2 == 0 ? 3 : 4),
                            WaterPrecipitation_Quantity = (i % 2 == 0 ? 6 : 8),
                            WaterQuantity = (i % 2 == 0 ? 7 : 99),
                            ZoneNumber    = (byte)x,
                        };
                        list_zone.Add(zone);
                        Assert.IsTrue(Repository.ZoneInProgram_Update(zone));
                    }

                    var list_zone_db = Repository.ZonesInProgram_Get(ProgramID);

                    Assert.IsTrue(list_zone_db.Length == list_zone.Count);

                    foreach (var item_db in list_zone_db)
                    {
                        var item = list_zone.Where(s => s.ZoneNumber == item_db.ZoneNumber).FirstOrDefault();
                        Assert.IsTrue(item != null);
                        Assert.IsTrue(item.FertQuant == item_db.FertQuant);
                        Assert.IsTrue(item.FertTime == item_db.FertTime);
                        Assert.IsTrue(item.OrderNumber == item_db.OrderNumber);
                        Assert.IsTrue(item.WaterAfter == item_db.WaterAfter);
                        Assert.IsTrue(item.WaterBefore == item_db.WaterBefore);
                        Assert.IsTrue(item.WaterDuration == item_db.WaterDuration);
                        Assert.IsTrue(item.WaterPrecipitation_Duration == item_db.WaterPrecipitation_Duration);
                        Assert.IsTrue(item.WaterPrecipitation_Quantity == item_db.WaterPrecipitation_Quantity);
                        Assert.IsTrue(item.WaterQuantity == item_db.WaterQuantity);
                    }


                    #endregion
                }
            }
        }