source: resTools_backend/backend/Services/ReservationService.cs@ d76b7ee

Last change on this file since d76b7ee was d76b7ee, checked in by Danilo <danilo.najkov@…>, 2 years ago

prototype final

  • Property mode set to 100644
File size: 2.9 KB
Line 
1using backend.Data;
2using backend.DTOs;
3using backend.Entities;
4using Microsoft.EntityFrameworkCore;
5
6namespace backend.Services
7{
8 public interface IReservationService
9 {
10 public Task CreateReservation(CreateReservationRequest req);
11 public Task ChangeReservationStatus(int resId, ReservationStatus status);
12 public Task<List<ReservationResponse>> GetReservatins(DateTime from, DateTime to);
13 }
14 public class ReservationService : IReservationService
15 {
16 private readonly DataContext _context = null;
17 private readonly ISmsService _smsService = null;
18
19 public ReservationService(DataContext context, ISmsService smsService)
20 {
21 _context = context;
22 _smsService = smsService;
23 }
24
25 public async Task ChangeReservationStatus(int resId, ReservationStatus status)
26 {
27 var reservation = await _context.Reservations.FindAsync(resId);
28 reservation.ReservationStatus = status;
29 _context.Update(reservation);
30 await _context.SaveChangesAsync();
31 _smsService.ReservationStatusUpdate(reservation.ContactName, reservation.ContactNumber, reservation.ReservationStatus);
32 }
33
34 public async Task CreateReservation(CreateReservationRequest req)
35 {
36 Restaurant res = await _context.Restoraunts.Include(x => x.Reservations).FirstOrDefaultAsync();
37 Reservation reservation = new Reservation()
38 {
39 ContactName = req.ContactName,
40 ContactNumber = req.ContactNumber,
41 ReservationPlace = req.ReservationPlace,
42 ReservationType = req.ReservationType,
43 StartDate = req.StartDate,
44 Persons = req.Persons,
45 ReservationStatus = ReservationStatus.New
46 };
47 res.Reservations.Add(reservation);
48 _context.Restoraunts.Update(res);
49 await _context.SaveChangesAsync();
50 }
51
52 public async Task<List<ReservationResponse>> GetReservatins(DateTime from, DateTime to)
53 {
54 Restaurant res = await _context.Restoraunts
55 .Include(x => x.Reservations
56 .Where(x => x.StartDate.CompareTo(from)>0 && x.StartDate.CompareTo(to)<=0))
57 .FirstOrDefaultAsync();
58 var reservations = res.Reservations.Select(t => new ReservationResponse()
59 {
60 ContactName = t.ContactName,
61 ContactNumber = t.ContactNumber,
62 Persons = t.Persons,
63 StartDate = t.StartDate,
64 ReservationStatus = t.ReservationStatus,
65 Id = t.Id,
66 ReservationPlace = t.ReservationPlace,
67 ReservationType = t.ReservationType
68 }).OrderByDescending(x => x.ReservationStatus == ReservationStatus.New).ToList();
69 return reservations;
70 }
71 }
72}
Note: See TracBrowser for help on using the repository browser.