public async Task <MedicineSchedule> EditAsync(MedicineSchedule medicineSchedule) { _context.MedicineSchedules.Update(medicineSchedule); await _context.SaveChangesAsync(); return(medicineSchedule); }
public async Task DeleteAsync(Guid id) { MedicineSchedule medicineSchedule = await _medicineScheduleRepo.GetByIdAsync(id); if (medicineSchedule == null) { throw new ApiException("Medicine schedule not found!"); } await _medicineScheduleRepo.DeleteAsync(medicineSchedule); }
public async Task EditAllBasedOnMedicineScheduleAsync(MedicineSchedule medicineSchedule) { IEnumerable <FoodSchedule> foodSchedules = await _foodScheduleRepo.GetAllByMedicineScheduleIdAsync(medicineSchedule.Id); if (!foodSchedules.Any()) { throw new ApiException("Food schedules not found!"); } FoodSchedule foodScheduleFirst = foodSchedules.FirstOrDefault(); await _foodScheduleRepo.DeleteAllAsync(foodSchedules); IEnumerable <MedicineSchedule> medicineSchedules = new List <MedicineSchedule>() { medicineSchedule }; await AddAsync(foodScheduleFirst, medicineSchedules); }
public async Task <MedicineSchedule> EditAsync(MedicineSchedule medicineSchedule) { MedicineSchedule medicineScheduleOld = await _medicineScheduleRepo.GetByIdAsync(medicineSchedule.Id); if (medicineScheduleOld == null) { throw new ApiException("Medicine schedule not found!"); } IEnumerable <MedicineSchedule> existingMedicineSchedules = (await _medicineScheduleRepo.GetAllByUserIdAndMedicineIdAsync (medicineSchedule.UserId, medicineSchedule.MedicineId)) .Where(ms => ms.EndDate.Date >= DateTime.UtcNow.Date).Where(ms => ms.Id != medicineSchedule.Id); if (existingMedicineSchedules.Any(ms => DoesMedicineScheduleOverlap(medicineSchedule, ms))) { throw new ApiException($"Medicine schedules for {medicineScheduleOld.Medicine.Name} overlap!", 400); } MedicineSchedule medicineScheduleNew = await _medicineScheduleRepo.EditAsync(medicineSchedule); await _foodScheduleService.EditAllBasedOnMedicineScheduleAsync(medicineScheduleNew); return(medicineScheduleNew); }
public async Task DeleteAsync(MedicineSchedule medicineSchedule) { _context.MedicineSchedules.Remove(medicineSchedule); await _context.SaveChangesAsync(); }
private bool DoesMedicineScheduleOverlap(MedicineSchedule ms1, MedicineSchedule ms2) { return(ms1.MedicineId == ms2.MedicineId && ms1.StartDate <= ms2.EndDate && ms1.EndDate >= ms2.StartDate); }