public void TimeConversionDaysToMinutes_TestSuccess()
      {
          TimeConvertor timeConvert = new TimeConvertor();
          int           result2     = timeConvert.DaysToMinutes(2535); // nije presao na sledeci test zato sto je nasao gresku u prvom i samim tim ne gleda

          Assert.Less(result2, 2523535);
      }
      public void TimeConversionDaysToSeconds_TestSuccess()
      {
          TimeConvertor timeConvert = new TimeConvertor();   // Treba praviti celu klasu za jednu metodu koju testiramo
          int           result3     = timeConvert.DaysToSeconds(3600);

          Assert.True(true, "Istina!~!!!", null);
      }
      public void TimeConversion_TestSuccess()
      {
          TimeConvertor timeConvert = new TimeConvertor();   // Treba praviti celu klasu za jednu metodu koju testiramo
          int           result      = timeConvert.DaysToHours(1);

          Assert.IsTrue(false, "If false test will fail!");
      }
示例#4
0
        private void DrawConfig(Graphics g)
        {
            Font font = new Font(_fontName, 8);

            StringFormat drawFormat = new StringFormat();

            drawFormat.Trimming    = StringTrimming.EllipsisCharacter;
            drawFormat.FormatFlags = StringFormatFlags.NoWrap;

            int i = 0;
            int x = _configTextAreaLeftTopPoint.X;
            int y = _configTextAreaLeftTopPoint.Y;

            for (; i < _appConfig.MinerInfo.PoolInfos.Length && i < 3; i++)
            {
                // url
                RectangleF rect = new RectangleF(x, y, _configTextAreaWidthArray[0], _configTextAreaHeight);
                g.DrawString(_appConfig.MinerInfo.PoolInfos[i].PoolURL, font, Brushes.Black, rect, drawFormat);

                x   += _configTextAreaWidthArray[0] + _configTextAreaHGaps[0];
                rect = new RectangleF(x, y, _configTextAreaWidthArray[1], _configTextAreaHeight);
                g.DrawString(_appConfig.MinerInfo.PoolInfos[i].WorkerName, font, Brushes.Black, rect, drawFormat);

                x   += _configTextAreaWidthArray[1] + _configTextAreaHGaps[1];
                rect = new RectangleF(x, y, _configTextAreaWidthArray[2], _configTextAreaHeight);
                g.DrawString(_appConfig.MinerInfo.PoolInfos[i].PoolPort, font, Brushes.Black, rect, drawFormat);

                //_currentPoolResult
                bool active = false;
                x += _configTextAreaWidthArray[2] + _configTextAreaHGaps[2];

                string timeString = TimeConvertor.GetTimeString(0);
                if (_currentPoolResult != null && i < _currentPoolResult.Pools.Length)
                {
                    timeString = TimeConvertor.GetTimeString(_currentPoolResult.Pools[i].Last_Share_Time * 1000);

                    if (_currentPoolResult.Pools[i].Status.Equals("Alive", StringComparison.InvariantCultureIgnoreCase))
                    {
                        active = true;
                    }
                }

                rect = new RectangleF(x, y, _configTextAreaWidthArray[2], _configTextAreaHeight);
                g.DrawString(timeString, font, Brushes.Black, rect, drawFormat);

                if (active)
                {
                    g.DrawImage(Resources.online, x - 20 - 20, y - 5);
                }
                else
                {
                    g.DrawImage(Resources.offline, x - 20 - 20, y - 5);
                }

                x  = _configTextAreaLeftTopPoint.X;
                y += _configTextAreaVGap;
            }
        }
 public CyclicDayProgramView(CyclicDayProgram setting)
 {
     if (setting == null)
     {
         return;
     }
     StartDate    = TimeConvertor.GetTicks(setting.StartDate);
     DaysInterval = setting.DaysInterval;
 }
        public ColorEntity toEntity(ColorCreateRequest request)
        {
            ColorEntity entity = new ColorEntity();

            var item = request.Item;

            entity.ColorId        = item.ColorId;
            entity.ColorName      = item.ColorName;
            entity.DataStatus     = 1;
            entity.CreateTime     = TimeConvertor.FromMilliTicks(TimeConvertor.ToMilliTicks(DateTime.Now));
            entity.LastUpdateTime = TimeConvertor.FromMilliTicks(TimeConvertor.ToMilliTicks(DateTime.Now));

            return(entity);
        }
示例#7
0
        public CategoryEntity toEntity(CategoryCreateRequest request)
        {
            CategoryEntity entity = new CategoryEntity();

            var item = request.Item;

            entity.Name           = item.Name;
            entity.Description    = item.Description;
            entity.DataStatus     = 1;
            entity.CreateTime     = TimeConvertor.FromMilliTicks(TimeConvertor.ToMilliTicks(DateTime.Now));
            entity.LastUpdateTime = TimeConvertor.FromMilliTicks(TimeConvertor.ToMilliTicks(DateTime.Now));

            return(entity);
        }
示例#8
0
        public NoticeCategoryEntity ToEntity(NoticeCategoryCreateRequest request)
        {
            NoticeCategoryEntity entity = new NoticeCategoryEntity();

            var item = request.Item;

            entity.Name           = item.Name;
            entity.Title          = item.Title;
            entity.Remark         = item.Remark;
            entity.DataStatus     = 1;
            entity.CreateTime     = TimeConvertor.FromMilliTicks(TimeConvertor.ToMilliTicks(DateTime.Now));
            entity.LastUpdateTime = TimeConvertor.FromMilliTicks(TimeConvertor.ToMilliTicks(DateTime.Now));

            return(entity);
        }
示例#9
0
        public TheBookEntity toEntity(TheBookCreateRequest request)
        {
            TheBookEntity entity = new TheBookEntity();

            var item = request.Item;

            entity.Title       = item.Title;
            entity.CategoryIds = item.CategoryIds != null?string.Join(";", item.CategoryIds) : null;

            entity.ColorId        = item.ColorId;
            entity.DataStatus     = 1;
            entity.CreateTime     = TimeConvertor.FromMilliTicks(TimeConvertor.ToMilliTicks(DateTime.Now));
            entity.LastUpdateTime = TimeConvertor.FromMilliTicks(TimeConvertor.ToMilliTicks(DateTime.Now));

            return(entity);
        }
示例#10
0
        public NoticeEntity ToEntity(NoticeUpdateRequest request, NoticeEntity oldEntity)
        {
            NoticeEntity entity = new NoticeEntity();

            var item = request.Item;

            entity.Id             = request.Id;
            entity.Title          = item.Title;
            entity.Body           = item.Body;
            entity.Category       = item.Category;
            entity.DataStatus     = oldEntity.DataStatus;
            entity.CreateTime     = oldEntity.CreateTime;
            entity.LastUpdateTime = TimeConvertor.FromMilliTicks(TimeConvertor.ToMilliTicks(DateTime.Now));

            return(entity);
        }
示例#11
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();
 }
示例#12
0
        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);
        }
示例#13
0
        public ScheduledIrrigationView[] GetScheduled(string sN, long StartTicks, long EndTicks)
        {
            var      sDate = TimeConvertor.GetDateTime(StartTicks);
            DateTime Start = new DateTime(sDate.Year, sDate.Month, sDate.Day, 0, 0, 0);
            var      eDate = TimeConvertor.GetDateTime(EndTicks);
            DateTime End   = new DateTime(eDate.Year, eDate.Month, eDate.Day, 23, 59, 59);

            var ScheduledIrrigation = new List <ScheduledIrrigationView>();
            var ProgramList         = _AdminRepository.DevicePrograms_Get(sN).Where(p => (!p.FinalEndDateLimit.HasValue || p.FinalEndDateLimit.Value > End) &&
                                                                                    (!p.FinalStartDateLimit.HasValue || p.FinalStartDateLimit.Value < Start) &&
                                                                                    (StatusType)p.StatusID == StatusType.Active).ToArray();

            var MainPipe           = _AdminRepository.MainPipeSettings_Get(sN);
            var device_WaterFactor = MainPipe != null ? MainPipe.WaterFactor : 100;


            var ZoneSetting = _AdminRepository.DeviceZoneSetting_Get(sN);

            foreach (var program in ProgramList)
            {
                var PeriodDate     = new List <DateTime>();
                var ExecutionTimes = new List <ExecutionTime>();

                decimal WaterFactor = (program.WaterFactor != 100 ? program.WaterFactor : device_WaterFactor) * 0.01m;

                #region Weekly - Get the allow watering days

                if ((DaysExecutionType)program.DaysExecutionsTypeID == DaysExecutionType.Weekly)
                {
                    var weeklyDays = _AdminRepository.WeeklyProgramSetting_Get(program.ProgramID);
                    var tempStart  = Start;
                    while (tempStart < End)
                    {
                        switch (tempStart.DayOfWeek)
                        {
                        case DayOfWeek.Sunday:
                            if (weeklyDays.Sunday)
                            {
                                PeriodDate.Add(tempStart);
                            }
                            break;

                        case DayOfWeek.Monday:
                            if (weeklyDays.Monday)
                            {
                                PeriodDate.Add(tempStart);
                            }
                            break;

                        case DayOfWeek.Tuesday:
                            if (weeklyDays.Tuesday)
                            {
                                PeriodDate.Add(tempStart);
                            }
                            break;

                        case DayOfWeek.Wednesday:
                            if (weeklyDays.Wednesday)
                            {
                                PeriodDate.Add(tempStart);
                            }
                            break;

                        case DayOfWeek.Thursday:
                            if (weeklyDays.Thursday)
                            {
                                PeriodDate.Add(tempStart);
                            }
                            break;

                        case DayOfWeek.Friday:
                            if (weeklyDays.Friday)
                            {
                                PeriodDate.Add(tempStart);
                            }
                            break;

                        case DayOfWeek.Saturday:
                            if (weeklyDays.Saturday)
                            {
                                PeriodDate.Add(tempStart);
                            }
                            break;
                        }

                        tempStart = tempStart.AddDays(1);
                    }
                }
                #endregion

                #region CyclicDayProgram -StartDate and DaysInterval
                else if ((DaysExecutionType)program.DaysExecutionsTypeID == DaysExecutionType.Cyclic)
                {
                    var CyclicSetting = _AdminRepository.CyclicDayProgram_Get(program.ProgramID);
                    var tempStart     = CyclicSetting.StartDate > Start ? CyclicSetting.StartDate : Start;
                    tempStart = new DateTime(tempStart.Year, tempStart.Month, tempStart.Day, 0, 0, 0);
                    while (tempStart < End)
                    {
                        PeriodDate.Add(tempStart);
                        tempStart = tempStart.AddDays(CyclicSetting.DaysInterval);
                    }
                }
                #endregion

                #region Fixed Time - By Execution Hours

                if ((HoursExecutionType)program.HoursExecutionsTypeID == HoursExecutionType.Fixed)
                {
                    var ExecuTimes = _AdminRepository.ExecutionHoursProgram_Get(program.ProgramID);
                    foreach (var item_Date in PeriodDate)
                    {
                        foreach (var startTime in ExecuTimes)
                        {
                            var initialStart = item_Date.AddSeconds(startTime.ExecTime);
                            ExecutionTimes.Add(new ExecutionTime()
                            {
                                StartDate = initialStart
                            });
                        }
                    }
                }
                #endregion

                #region Interval time  - StartTime ,Cycl and Interval Spent time
                else if ((HoursExecutionType)program.HoursExecutionsTypeID == HoursExecutionType.Interval)
                {
                    foreach (var item_Date in PeriodDate)
                    {
                        var CyclesPerDay = program.HourlyCyclesPerDay;
                        var Counter      = 0;
                        var StartTime    = program.HourlyCyclesStartTime;
                        while (Counter < CyclesPerDay)
                        {
                            var item_Date1 = item_Date.AddSeconds(StartTime + Counter * program.HourlyCycleTime);
                            ExecutionTimes.Add(new ExecutionTime()
                            {
                                StartDate = item_Date1, Interval = Counter
                            });
                            Counter++;
                        }
                    }
                }
                #endregion

                #region ExecutionTimes over ZoneInProgram

                var ZoneInProgram = _AdminRepository.ZonesInProgram_Get(program.ProgramID);

                foreach (var item_time in ExecutionTimes)
                {
                    ScheduledIrrigationView item_Scheduled = new ScheduledIrrigationView()
                    {
                        ProgramID      = program.ProgramID,
                        StartDate      = item_time.StartDate,
                        Interval       = item_time.Interval,
                        Zones          = new List <ZoneScheduledItemView>(),
                        Name           = program.Name,
                        IsFertilizerON = program.IsFertilizerON,
                    };
                    ScheduledIrrigation.Add(item_Scheduled);

                    var      startTime    = item_time.StartDate;
                    DateTime endTime      = new DateTime();
                    var      midnightTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, 0, 0, 0).AddDays(1);
                    var      totalTime    = 0;

                    foreach (var Zoneitem in ZoneInProgram)
                    {
                        var zoneSetting = ZoneSetting.Where(z => z.OutputNumber == Zoneitem.ZoneNumber).FirstOrDefault();

                        if (zoneSetting != null)
                        {
                            zoneSetting = new GSI.DAL.DataAccessLayer.Models.Zone.ZoneSetting()
                            {
                                ZoneColor    = 15658734,
                                OutputNumber = Zoneitem.ZoneNumber,
                                Name         = "Name" + Zoneitem.ZoneNumber
                            };
                        }


                        var WaterMeterSetting     = _AdminRepository.WaterMeterSetting_Get(sN);
                        var FlowTypeID            = WaterMeterSetting != null ? (WaterMeter_FlowType?)WaterMeterSetting.FlowTypeID : null;
                        var FlowValue             = zoneSetting.SetupNominalFlow != null ? zoneSetting.SetupNominalFlow : zoneSetting.LastFlow;
                        var PulseTypeID           = WaterMeterSetting != null ? (WaterMeter_PulseType)WaterMeterSetting.PulseTypeID : WaterMeter_PulseType.LITER_AS_LITER;
                        int WaterDuration_Seconds = GetDurationTime(FlowTypeID, FlowValue, PulseTypeID, (WaterProgramType)program.WaterUnitID, zoneSetting, Zoneitem);


                        WaterDuration_Seconds = (int)(WaterDuration_Seconds * WaterFactor);

                        endTime    = startTime.AddSeconds(WaterDuration_Seconds);
                        totalTime += WaterDuration_Seconds;
                        if (midnightTime < endTime)
                        {
                            item_Scheduled = new ScheduledIrrigationView()
                            {
                                StartDate      = midnightTime,
                                ProgramID      = item_Scheduled.ProgramID,
                                Interval       = item_time.Interval,
                                Zones          = new List <ZoneScheduledItemView>(),
                                Name           = program.Name,
                                IsFertilizerON = program.IsFertilizerON,
                            };
                            midnightTime = new DateTime(endTime.Year, endTime.Month, endTime.Day, 0, 0, 0).AddDays(1);
                            ScheduledIrrigation.Add(item_Scheduled);
                        }

                        item_Scheduled.Zones.Add(new ZoneScheduledItemView()
                        {
                            Duration    = Zoneitem.WaterDuration,
                            FertQuant   = Zoneitem.FertQuant,
                            FertTime    = Zoneitem.FertTime,
                            WaterAfter  = Zoneitem.WaterAfter,
                            WaterBefore = Zoneitem.WaterBefore,
                            Zone        = new ZoneScheduledInfoView()
                            {
                                Color   = zoneSetting.ZoneColor,
                                ZoneNum = zoneSetting.OutputNumber,
                                Name    = zoneSetting.Name
                            },
                            StartTime = startTime,
                            EndTime   = endTime
                        });

                        startTime = endTime;
                    }
                    item_Scheduled.EndDate = endTime;
                }

                #endregion
            }
            return(ScheduledIrrigation.ToArray());
        }