/// <summary> /// Skapar en bokning /// För att ställa sig i kö behövs det läggas till mer kod /// </summary> /// <param name="residentId"></param> /// <param name="reservationsId"></param> /// <returns></returns> public static bool MakeReservation(int residentId, string reservationsId) { using (var db = new WasherContext()) { var x = db.Reservation.FirstOrDefault(r => r.Id == reservationsId); if (x != null) { if (x.Reservationlist.Any()) { throw new Exception("Det finns redan en bokning på denna tid"); // Här ska vi fråga om använadren vill ställa sig i kö //return false; } var residentToAdd = db.Residents.FirstOrDefault(a => a.ResidentId == residentId); x.Reservationlist.Add(residentToAdd); try { db.SaveChanges(); } catch (DbUpdateConcurrencyException ex) { throw; } return true; } return false; } }
/// <summary> /// /// </summary> /// <param name="residentId"></param> /// <returns></returns> public static List<IList<Reservation>> GetResidentsReservations(int residentId) { List<IList<Reservation>> listOfReservations; using (var db = new WasherContext()) { listOfReservations = db.Residents .Where(x => x.ResidentId == residentId) .Include(x => x.Reservations) .Select(x => x.Reservations) .ToList(); } return listOfReservations; }
/// <summary> /// Ställa sig i kö för en bokning /// </summary> /// <param name="residentId"></param> /// <param name="reservationsId"></param> /// <returns></returns> public static bool MakeQueReservation(int residentId, string reservationsId) { using (var db = new WasherContext()) { var x = db.Reservation.FirstOrDefault(r => r.Id == reservationsId); if (x != null) { if (!x.Reservationlist.Any()) { return false; } var residentToAdd = db.Residents.FirstOrDefault(a => a.ResidentId == residentId); x.Reservationlist.Add(residentToAdd); db.SaveChanges(); return true; } return false; } }
/// <summary> /// Hämtar nästa lediga tid /// </summary> /// <returns></returns> public static Reservation GetNextAvailbelReservations() { Reservation reservation; using (var db = new WasherContext()) { var today = DateTime.Now; reservation = db.Reservation .Where(x => !x.Reservationlist.Any()) .FirstOrDefault(x => DbFunctions.CreateDateTime(x.StarTime.Year, x.StarTime.Month, x.StarTime.Day, x.StarTime.Hour, x.StarTime.Minute, x.StarTime.Minute) > today); } return reservation; }
/// <summary> /// Hämtar nästa 10 lediga tider på helg /// </summary> /// <returns></returns> public static List<Reservation> GetNextTenAvailbelReservations() { List<Reservation> reservations; using (var db = new WasherContext()) { // Tar reda på söndag i dåtid och dagens datum, sedan använder diffen för att // kolla viken veckodag det är var today = DateTime.Now; var sunday = new DateTime(2014, 12, 7); reservations = db.Reservation // tar bara med om det inte finns någon reservation .Where(x => !x.Reservationlist.Any()) // Kollar om det är Lördag eller söndag .Where(r => DbFunctions.DiffDays(sunday, r.StarTime) % 7 == 6 || DbFunctions.DiffDays(sunday, r.StarTime) % 7 == 0) // Säkerställer att det i datumordning .OrderBy(x => x.StarTime) // Väljer det 10 första .Take(10) .ToList(); } return reservations; }
/// <summary> /// Hämtar lediga tider för en specifik dag /// </summary> /// <param name="date">Ange en giltig DateTime</param> /// <returns>Lista med Reservations</returns> public static List<Reservation> GetAvailbelReservations(string date) { List<Reservation> reservations; using (var db = new WasherContext()) { DateTime today; DateTime.TryParse(date, out today); reservations = db.Reservation .Where(x => SqlFunctions.DatePart("Day", x.Id) == SqlFunctions.DatePart("Day", date) && !x.Reservationlist.Any()) //.OrderBy() .ToList(); } return reservations; }
/// <summary> /// Hämtar alla maskiner /// </summary> /// <returns>Returnerar en lista med alla maskien</returns> public static List<Machine> GetMachines() { using (var db = new WasherContext()) { var listOfMachines = db.Machines.ToList(); return listOfMachines; } }
/// <summary> /// Radera en Resident /// </summary> /// <param name="residentId">Ange Id för den som ska raderas</param> /// <returns>Returnera den raderade residenten</returns> public static Resident DeleteResident(int residentId) { Resident resident; using (var db = new WasherContext()) { resident = db.Residents //.Include(r => r.Reservations) //.Include(x => x.Cue) .FirstOrDefault(x => x.ResidentId == residentId); //.Find(residentId) //; if (resident != null) { db.Residents.Remove(resident); } try { db.SaveChanges(); } catch (Exception) { throw; } } return resident; }
/// <summary> /// Felanmäla ett maskin /// </summary> /// <param name="residentId">Ange ResidentID</param> /// <param name="errorDescription">Skriv en beskrivning av felet</param> /// <param name="machineId">Ange Machine ID</param> /// <returns>Returnera</returns> public static ErrorMessage CreateErrorMessage(int residentId, string errorDescription, string machineId) { var em = new ErrorMessage(); using (var db = new WasherContext()) { em.ErrorDescription = errorDescription; em.ResidentId = db.Residents.FirstOrDefault(r => r.ResidentId == residentId); em.Machine_Id = new Guid(machineId); em.Time = DateTime.Now; db.ErrorMessages.Add(em); try { db.SaveChanges(); } catch (Exception) { throw; } } return em; }
/// <summary> /// Avboka en reservation /// </summary> /// <param name="reservationId"></param> /// <param name="residentId"></param> /// <returns>Resravation som blev ändrad</returns> public static Reservation CancelReservation(string reservationId, int residentId) { Reservation reservation; using (var db = new WasherContext()) { reservation = db.Reservation .Include(l => l.Reservationlist) .FirstOrDefault(r => r.Id == reservationId); reservation?.Reservationlist.Remove(reservation?.Reservationlist.FirstOrDefault(g => g.ResidentId == residentId)); try { db.SaveChanges(); } catch (Exception) { throw; } } return reservation; }
/// <summary> /// Uppdatera en resident /// </summary> /// <param name="resident"></param> /// <returns>Den uppdaterade residenten</returns> public static Resident AlterResident(Resident resident) { Resident updatedResident = null; using (var db = new WasherContext()) { var orginalResident = db.Residents.Find(resident.ResidentId); if (orginalResident == null) { return updatedResident; } orginalResident.Email = resident.Email; orginalResident.Adress = resident.Adress; orginalResident.Name = resident.Name; db.Entry(orginalResident).State = EntityState.Modified; try { db.SaveChanges(); } catch (Exception) { throw; } } return resident; }
/// <summary> /// Lägger till en ny boende, Behöver lägga till logik för att säkerställa att epost är unik /// </summary> /// <param name="adress">Ange adressen</param> /// <param name="email">Ange mailadressen</param> /// <param name="name">Ange Namnet</param> /// <returns></returns> public static Resident AddResident(string adress, string email, string name) { Resident newResident = null; using (var db = new WasherContext()) { newResident = db.Residents.Add( new Resident { Name = name, Email = email, Adress = adress }); try { db.SaveChanges(); } catch (Exception exception) { return newResident; } } return newResident; }