public ActionResult <AppointmentDTO> PostAppointment(int id, AppointmentDTO appointment) { Hairdresser hairdresser = _hairdresserRepository.GetBy(id); if (hairdresser == null) { return(NotFound()); } if (appointment.StartMoment < DateTime.Now) { return(BadRequest()); } IList <Treatment> treatments = new List <Treatment>(); foreach (Treatment tr in appointment.Treatments) { treatments.Add(hairdresser.GetTreatment(tr.Id)); } Appointment appointmentToCreate = new Appointment(treatments, appointment.StartMoment, appointment.Firstname, appointment.Lastname); bool result = hairdresser.AddAppointment(appointmentToCreate); if (result == false) { return(BadRequest()); } _hairdresserRepository.SaveChanges(); _hub.Clients.All.SendAsync("appointments", hairdresser.Appointments.Select(a => new AppointmentDTO() { Id = a.Id, Firstname = a.Firstname, Lastname = a.Lastname, StartMoment = a.StartMoment, Treatments = a.Treatments.Select(tr => tr.Treatment).ToList() }).ToList()); return(Ok(new AppointmentDTO() { StartMoment = appointmentToCreate.StartMoment, Treatments = appointmentToCreate.Treatments.Select(tr => tr.Treatment).ToList() })); // CreatedAtAction() not possible --> bug }
public async Task InitializeDataAsync() { _dbContext.Database.EnsureDeleted(); if (_dbContext.Database.EnsureCreated()) { // Hairlounge Marlies List <TimeRange> workday = new List <TimeRange>(); workday.Add(new TimeRange(new Time(7, 30, 0), new Time(12, 30, 0))); workday.Add(new TimeRange(new Time(13, 30, 0), new Time(18, 30, 0))); IList <WorkDay> workDays = new List <WorkDay> { new WorkDay(DayOfWeek.Monday, workday), new WorkDay(DayOfWeek.Tuesday, workday.Select(wd => (TimeRange)wd.Clone()).ToList()), new WorkDay(DayOfWeek.Wednesday, workday.Select(wd => (TimeRange)wd.Clone()).ToList()), new WorkDay(DayOfWeek.Thursday, workday.Select(wd => (TimeRange)wd.Clone()).ToList()), new WorkDay(DayOfWeek.Friday, workday.Select(wd => (TimeRange)wd.Clone()).ToList()), new WorkDay(DayOfWeek.Saturday, new List <TimeRange>()), new WorkDay(DayOfWeek.Sunday, new List <TimeRange>()) }; IList <Treatment> treatments = new List <Treatment>(); Treatment treatment = new Treatment("Knippen", new TimeSpan(0, 20, 0), TreatmentCategory.MEN, 20); Treatment treatment2 = new Treatment("Knippen", new TimeSpan(0, 20, 0), TreatmentCategory.WOMEN, 30); Treatment treatment3 = new Treatment("Knippen", new TimeSpan(0, 20, 0), TreatmentCategory.CHILDREN, 10); Treatment treatment4 = new Treatment("Drogen", new TimeSpan(0, 10, 0), TreatmentCategory.MEN, 10); Treatment treatment5 = new Treatment("Drogen", new TimeSpan(0, 20, 0), TreatmentCategory.WOMEN, 10); treatments.Add(treatment); treatments.Add(treatment2); treatments.Add(treatment3); treatments.Add(treatment4); treatments.Add(treatment5); Appointment appointment = new Appointment(new List <Treatment>() { treatment }, new DateTime(2020, 5, 27, 11, 30, 0), "Robbe", "Ramon"); Hairdresser hairdresser1 = new Hairdresser("Hairlounge Marlies", "*****@*****.**", treatments, workDays) { BannerPath = "Resources/Images/[email protected]/48169.jpg" }; hairdresser1.AddAppointment(appointment); _dbContext.Add(hairdresser1); await CreateUser(hairdresser1.Email, "P@ssword1111"); // Alexa List <TimeRange> workdayB = new List <TimeRange>(); workdayB.Add(new TimeRange(new Time(7, 30, 0), new Time(12, 30, 0))); workdayB.Add(new TimeRange(new Time(13, 30, 0), new Time(18, 30, 0))); IList <WorkDay> workDaysB = new List <WorkDay> { new WorkDay(DayOfWeek.Monday, workdayB), new WorkDay(DayOfWeek.Tuesday, workdayB.Select(wd => (TimeRange)wd.Clone()).ToList()), new WorkDay(DayOfWeek.Wednesday, workdayB.Select(wd => (TimeRange)wd.Clone()).ToList()), new WorkDay(DayOfWeek.Thursday, workdayB.Select(wd => (TimeRange)wd.Clone()).ToList()), new WorkDay(DayOfWeek.Friday, workdayB.Select(wd => (TimeRange)wd.Clone()).ToList()), new WorkDay(DayOfWeek.Saturday, new List <TimeRange>()), new WorkDay(DayOfWeek.Sunday, new List <TimeRange>()) }; IList <Treatment> treatmentsB = new List <Treatment>(); Treatment treatmentB = new Treatment("Knippen", new TimeSpan(0, 30, 0), TreatmentCategory.MEN, 25); Treatment treatment2B = new Treatment("Knippen", new TimeSpan(0, 30, 0), TreatmentCategory.WOMEN, 35); Treatment treatment3B = new Treatment("Knippen", new TimeSpan(0, 30, 0), TreatmentCategory.CHILDREN, 15); treatmentsB.Add(treatmentB); treatmentsB.Add(treatment2B); treatmentsB.Add(treatment3B); Appointment appointmentB = new Appointment(new List <Treatment>() { treatmentB }, new DateTime(2020, 5, 27, 11, 30, 0), "Robbe", "Ramon"); Hairdresser hairdresser1B = new Hairdresser("Alexa", "*****@*****.**", treatmentsB, workDaysB); hairdresser1B.CardImagePath = "Resources/Images/[email protected]/hairdresser.jpg"; hairdresser1B.AddAppointment(appointmentB); _dbContext.Add(hairdresser1B); await CreateUser(hairdresser1B.Email, "P@ssword1111"); // Placeholder haridressers without treatments and opening hours _dbContext.Add(new Hairdresser("Luxury treatments", "*****@*****.**") { CardImagePath = "Resources/Images/[email protected]/hairdresser2.jpg" }); await CreateUser("*****@*****.**", "P@ssword1111"); _dbContext.Add(new Hairdresser("Hair to toe", "*****@*****.**") { CardImagePath = "Resources/Images/[email protected]/hairdresser3.jpg" }); await CreateUser("*****@*****.**", "P@ssword1111"); _dbContext.Add(new Hairdresser("Coiffure", "*****@*****.**") { CardImagePath = "Resources/Images/[email protected]/hairdresser4.jpg" }); await CreateUser("*****@*****.**", "P@ssword1111"); _dbContext.Add(new Hairdresser("De kapperzaak", "*****@*****.**") { CardImagePath = "Resources/Images/[email protected]/hairdresser5.jpg" }); await CreateUser("*****@*****.**", "P@ssword1111"); } _dbContext.SaveChanges(); }