private bool CheckIfHoursAreCorrect(AlarmProfilerDayDefinition day)
 {
     if (day.AlwaysSend)
     {
         return(true);
     }
     else if (day.NeverSend)
     {
         return(false);
     }
     else if (day.SendBetween)
     {
         int hour = DateTime.Now.Hour;
         //if current hour is greather or equal to lower hour limit and less than upper hour limit
         if (hour >= day.LowerHour && hour < day.UpperHour)
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     else
     {
         return(false);
     }
 }
        //writing single day data to DB
        private bool WriteSingleDayToDB(AlarmProfilerDayDefinition day, int profileID)
        {
            try
            {
                _realm.Write(() =>
                {
                    _realm.Add(new AlarmProfilerDayDefinition()
                    {
                        Identity          = GetNewIdentity(new AlarmProfilerDayDefinition()),
                        ProfileForeignKey = profileID,
                        DayNumber         = day.DayNumber,
                        AlwaysSend        = day.AlwaysSend,
                        NeverSend         = day.NeverSend,
                        SendBetween       = day.SendBetween,
                        LowerHour         = day.LowerHour,
                        UpperHour         = day.UpperHour,
                    });
                });

                return(true);
            }
            catch (Exception ex)
            {
                _logger.Error($"Error while trying to add single day of alarm profile definition: {ex.Message}.");
                return(false);
            }
        }
        public bool CheckSendingPermissions()
        {
            List <AlarmProfilerDayDefinition> days = GetListOfAlarmDefinitions();
            AlarmProfilerDayDefinition        day  = GetProperDay(days);

            return(CheckIfHoursAreCorrect(day));
        }
 //assigning new instances to days
 private void AssignInstancesToDays()
 {
     _monday    = new AlarmProfilerDayDefinition();
     _tuesday   = new AlarmProfilerDayDefinition();
     _wednesday = new AlarmProfilerDayDefinition();
     _thursday  = new AlarmProfilerDayDefinition();
     _friday    = new AlarmProfilerDayDefinition();
     _saturday  = new AlarmProfilerDayDefinition();
     _sunday    = new AlarmProfilerDayDefinition();
 }
        private void SaveProfileToDB(AlarmProfileCreator creator, FullAlarmProfileDefinition definition)
        {
            //convert models of alarms profile export into realm DB class
            List <AlarmProfilerDayDefinition> realmDaysList = new List <AlarmProfilerDayDefinition>();

            foreach (var item in definition.DaysList)
            {
                AlarmProfilerDayDefinition realmDay = new AlarmProfilerDayDefinition()
                {
                    Identity          = item.Identity,
                    DayNumber         = item.DayNumber,
                    AlwaysSend        = item.AlwaysSend,
                    NeverSend         = item.NeverSend,
                    SendBetween       = item.SendBetween,
                    UpperHour         = item.UpperHour,
                    LowerHour         = item.LowerHour,
                    ProfileForeignKey = item.ProfileForeignKey,
                };
                realmDaysList.Add(realmDay);
            }

            bool added = creator.SaveNewProfile(definition.AlarmProfileDefinition.CreatedBy, definition.AlarmProfileDefinition.ProfileName,
                                                definition.AlarmProfileDefinition.ProfileComment, realmDaysList);

            string message;

            if (added)
            {
                message = $"Alarm urgency profile successfully added to database.";
            }
            else
            {
                message = $"Alarm urgency profile NOT ADDED to Database.";
            }

            OnSingleImportDone(added, definition.AlarmProfileDefinition.ProfileName, message, false);
        }
        //method for modifying one day definition
        private bool ModifyOneDayDefinition(int profileID, AlarmProfilerDayDefinition day)
        {
            try
            {
                AlarmProfilerDayDefinition definition = _realm.All <AlarmProfilerDayDefinition>().Single(x => x.ProfileForeignKey == profileID && x.DayNumber == day.DayNumber);

                using (var trans = _realm.BeginWrite())
                {
                    definition.AlwaysSend  = day.AlwaysSend;
                    definition.NeverSend   = day.NeverSend;
                    definition.SendBetween = day.SendBetween;
                    definition.LowerHour   = day.LowerHour;
                    definition.UpperHour   = day.UpperHour;
                    trans.Commit();
                }

                return(true);
            }
            catch (Exception ex)
            {
                _logger.Error($"Error while trying to modify one day definition of alarm profile: {profileID} : {ex.Message}.");
                return(false);
            }
        }
        //assigning values to days properties
        private void AssignDayStartValues(AlarmProfilerDayDefinition day, int dayNumber)
        {
            switch (dayNumber)
            {
            case 0:
                if (day != null)
                {
                    SundayDayNumber = 0; SundayAlwaysSend = day.AlwaysSend; SundayNeverSend = day.NeverSend; SundaySendBetween = day.SendBetween; SundayLowerHour = day.LowerHour; SundayUpperHour = day.UpperHour; break;
                }
                else
                {
                    SundayDayNumber = 0; SundayAlwaysSend = true; SundayNeverSend = false; SundaySendBetween = false; SundayLowerHour = 0; SundayUpperHour = 24; break;
                }

            case 1:
                if (day != null)
                {
                    MondayDayNumber = 1; MondayAlwaysSend = day.AlwaysSend; MondayNeverSend = day.NeverSend; MondaySendBetween = day.SendBetween; MondayLowerHour = day.LowerHour; MondayUpperHour = day.UpperHour; break;
                }
                else
                {
                    MondayDayNumber = 1; MondayAlwaysSend = true; MondayNeverSend = false; MondaySendBetween = false; MondayLowerHour = 0; MondayUpperHour = 24; break;
                }

            case 2:
                if (day != null)
                {
                    TuesdayDayNumber = 2; TuesdayAlwaysSend = day.AlwaysSend; TuesdayNeverSend = day.NeverSend; TuesdaySendBetween = day.SendBetween; TuesdayLowerHour = day.LowerHour; TuesdayUpperHour = day.UpperHour; break;
                }
                else
                {
                    TuesdayDayNumber = 2; TuesdayAlwaysSend = true; TuesdayNeverSend = false; TuesdaySendBetween = false; TuesdayLowerHour = 0; TuesdayUpperHour = 24; break;
                }

            case 3:
                if (day != null)
                {
                    WednesdayDayNumber = 3; WednesdayAlwaysSend = day.AlwaysSend; WednesdayNeverSend = day.NeverSend; WednesdaySendBetween = day.SendBetween; WednesdayLowerHour = day.LowerHour; WednesdayUpperHour = day.UpperHour; break;
                }
                else
                {
                    WednesdayDayNumber = 3; WednesdayAlwaysSend = true; WednesdayNeverSend = false; WednesdaySendBetween = false; WednesdayLowerHour = 0; WednesdayUpperHour = 24; break;
                }

            case 4:
                if (day != null)
                {
                    ThursdayDayNumber = 4; ThursdayAlwaysSend = day.AlwaysSend; ThursdayNeverSend = day.NeverSend; ThursdaySendBetween = day.SendBetween; ThursdayLowerHour = day.LowerHour; ThursdayUpperHour = day.UpperHour; break;
                }
                else
                {
                    ThursdayDayNumber = 4; ThursdayAlwaysSend = true; ThursdayNeverSend = false; ThursdaySendBetween = false; ThursdayLowerHour = 0; ThursdayUpperHour = 24; break;
                }

            case 5:
                if (day != null)
                {
                    FridayDayNumber = 5; FridayAlwaysSend = day.AlwaysSend; FridayNeverSend = day.NeverSend; FridaySendBetween = day.SendBetween; FridayLowerHour = day.LowerHour; FridayUpperHour = day.UpperHour; break;
                }
                else
                {
                    FridayDayNumber = 5; FridayAlwaysSend = true; FridayNeverSend = false; FridaySendBetween = false; FridayLowerHour = 0; FridayUpperHour = 24; break;
                }

            case 6:
                if (day != null)
                {
                    SaturdayDayNumber = 6; SaturdayAlwaysSend = day.AlwaysSend; SaturdayNeverSend = day.NeverSend; SaturdaySendBetween = day.SendBetween; SaturdayLowerHour = day.LowerHour; SaturdayUpperHour = day.UpperHour; break;
                }
                else
                {
                    SaturdayDayNumber = 6; SaturdayAlwaysSend = true; SaturdayNeverSend = false; SaturdaySendBetween = false; SaturdayLowerHour = 0; SaturdayUpperHour = 24; break;
                }
            }
        }