public bool ChangeIlluminationIfNeeded(string appUserId, DateTime dateTime, Guid roomId)
        {
            Room room = _dbContext.Rooms.Where(rm => rm.Id == roomId)
                        .Include(r => r.IlluminationLogs)
                        .ThenInclude(il => il.HowOften)
                        .FirstOrDefault(t => t.AppUserId == appUserId);

            IlluminationLog illuminationLog = room.IlluminationLogs.FirstOrDefault(cl => cl.IsRepeatable != true && IsDateTimesEquals(cl.Date, dateTime));

            if (illuminationLog != null)
            {
                ChangeIllumination(illuminationLog);
                return(true);
            }

            List <IlluminationLog> illuminationLogs = room.IlluminationLogs.Where(cl => cl.IsRepeatable == true).ToList();

            illuminationLog = CheckIfIlluminationChangesNeeded(illuminationLogs, dateTime);

            if (illuminationLog != null)
            {
                UpdateRoomIlluminationState(illuminationLog);
                return(true);
            }

            _dbContext.SaveChanges();
            return(false);
        }
        private IlluminationLog CheckIfIlluminationChangesNeeded(List <IlluminationLog> climatLogs, DateTime dateTime)
        {
            IlluminationLog result       = null;
            List <int>      dayOfWeeksId = new List <int>()
            {
                3, 4, 5, 6, 7, 8, 9
            };

            foreach (IlluminationLog illuminationLog in climatLogs)
            {
                if (IsDateTimesEquals(dateTime, illuminationLog.Date) && _dbContext.IlluminationLogs.FirstOrDefault(tl => tl.RoomId == illuminationLog.RoomId && illuminationLog.Date == tl.Date) == null)
                {
                    result = illuminationLog;
                }
                if (illuminationLog.HowOften.Id == 2 && IsTimesEquals(dateTime, illuminationLog.Date))
                {
                    result = illuminationLog;
                }
                else if (illuminationLog.HowOften.Id == 10 && IsDayOfWeekWeekDay(dateTime) && IsTimesEquals(dateTime, illuminationLog.Date))
                {
                    result = illuminationLog;
                }
                else if (illuminationLog.HowOften.Id == 11 && !IsDayOfWeekWeekDay(dateTime) && IsTimesEquals(dateTime, illuminationLog.Date))
                {
                    result = illuminationLog;
                }
                else if (dayOfWeeksId.Contains(illuminationLog.HowOften.Id) && IsDayOfWeekAndTimeEquals(illuminationLog.Date, dateTime))
                {
                    result = illuminationLog;
                }
            }

            return(result);
        }
        public void UpdateRoomIlluminationState(IlluminationLog illuminationLog)
        {
            Room room = _dbContext.Rooms.FirstOrDefault(r => r.Id == illuminationLog.RoomId);

            room.CurrentLightIntensity = illuminationLog.LightIntensity;
            room.CurrentIsLight        = illuminationLog.IsLight;

            _dbContext.SaveChanges();
        }
        public void ChangeIllumination(IlluminationLog illuminationLog)
        {
            _dbContext.IlluminationLogs.Add(illuminationLog);
            if (IsDateTimesEquals(illuminationLog.Date, DateTime.Now))
            {
                UpdateRoomIlluminationState(illuminationLog);
            }

            _dbContext.SaveChanges();
        }
Exemple #5
0
        public JsonResult ChangeIllumination(RequestIlluminationLog requestIlluminationLog)
        {
            Room room = _roomRepository.GetRoomById(requestIlluminationLog.RoomId);

            if (room != null)
            {
                IlluminationLog climatLog = RequestIlluminationLogToIlluminationLog(requestIlluminationLog);
                _roomRepository.ChangeIllumination(climatLog);
                return(new JsonResult(new { message = "ok", coffeDeviceState = RoomStateById(requestIlluminationLog.RoomId) }));
            }
            else
            {
                return(new JsonResult(new
                {
                    message = "error",
                }));
            }
        }