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(); }
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", })); } }