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; }
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); }
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); }
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)); } }
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)); } }
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 } } }