public async Task <Flat> CreateEmptyMediaForUser(AddEmptyMediaRequest userRequest) { var flat = await _context.Flats.Include(p => p.MediaHistory).FirstOrDefaultAsync(p => p.Id == userRequest.FlatId); var startDate = GenerateStartDateFromCurrentDate(userRequest.Period); var endDate = GenerateEndDateFromCurrentDate(userRequest.Period); var coldWaterLastValue = 0.0; var hotWaterLastValue = 0.0; var heatingLastValue = 0.0; if (flat.MediaHistory?.Count() > 0) { coldWaterLastValue = flat.MediaHistory.Where(p => p.MediaType == MediaEnum.ColdWater).OrderByDescending(p => p.EndPeriodDate).First().CurrentValue; hotWaterLastValue = flat.MediaHistory.Where(p => p.MediaType == MediaEnum.HotWater).OrderByDescending(p => p.EndPeriodDate).First().CurrentValue; heatingLastValue = flat.MediaHistory.Where(p => p.MediaType == MediaEnum.Heat).OrderByDescending(p => p.EndPeriodDate).First().CurrentValue; } if (!flat.MediaHistory.Select(p => p.EndPeriodDate).Any(p => p >= startDate && p <= endDate)) { AddMediaTemplate(flat, startDate, endDate, coldWaterLastValue, MediaEnum.ColdWater); AddMediaTemplate(flat, startDate, endDate, hotWaterLastValue, MediaEnum.HotWater); AddMediaTemplate(flat, startDate, endDate, heatingLastValue, MediaEnum.Heat); _context.SaveChanges(); return(flat); } else { return(null); } }
public async Task <IActionResult> AddEmptyMediaEntryForUser(AddEmptyMediaRequest addMediaToDbRequest) { var user = await _userRepository.GetUserById(addMediaToDbRequest.AdministratorId); var flat = await _repo.CreateEmptyMediaForUser(addMediaToDbRequest); if (flat == null) { return(BadRequest()); } var messageSubject = "Wygenerowano nowe formularze do zgłoszenia zużycia mediów"; var messageContent = $"Użytkownik {user.FirstName} {user.LastName} wygenerował nowe formularze do zgłoszenia zuzycia mediów: \n\n" + $"-Formularz zużycia wody ciepłej \n" + $"-Formularz zużycia wody zimnej \n" + $"-Formularz zużycia energii na ogrzewanie \n\n" + $"W razie zastrzeżeń skontaktuj się z pracownikiem administracji. \n\n" + $"Treść maila wygenerowano automatycznie. Nie odpowiadaj na tego maila."; _mailService.SendMail(messageSubject, messageContent, "", "Home Community App"); return(Ok(flat)); }