public JsonResult ScheduleCustomer(ScheduleCustomerModel scheduleCustomerModel) { if (scheduleCustomerModel is null) { return(Json("Object cannot be null.")); } if (!c_listOfBarbers.Contains(scheduleCustomerModel.BarberName)) { return(Json("Barber must be one of the following: " + string.Join(", ", c_listOfBarbers))); } // get list of already scheduled customers from session. List <ScheduledCustomerModel> currentScheduledCustomers = scheduledCustomers; // Check to see we aren't scheduling the same customer twice. if (currentScheduledCustomers.Any(a => a.Name == scheduleCustomerModel.Name && a.PhoneNumber == scheduleCustomerModel.PhoneNumber)) { return(Json("Customer is already scheduled.")); } ScheduledCustomerModel newScheduledCustomerModel = new ScheduledCustomerModel { AppointmentID = GetAppointmentId(), Name = scheduleCustomerModel.Name, PhoneNumber = scheduleCustomerModel.PhoneNumber, BarberNameRequested = scheduleCustomerModel.BarberName }; bool barberWasAvailable = false; // If the barber requested is not busy, assign them to that barber. if (!currentScheduledCustomers.Any(a => a.CurrentBarberAssigned == scheduleCustomerModel.BarberName)) { barberWasAvailable = true; newScheduledCustomerModel.CurrentBarberAssigned = scheduleCustomerModel.BarberName; } currentScheduledCustomers.Add(newScheduledCustomerModel); // update the session data. scheduledCustomers = currentScheduledCustomers; if (barberWasAvailable) { return(Json("Success. Customer is seeing barber.")); } else { // exclude the customers who are already currently assigned a barber. return(Json(String.Format("Success. Customer is {0} in line.", currentScheduledCustomers.Where(w => w.CurrentBarberAssigned is null).Count()))); } }
public JsonResult ScheduleCustomer(ScheduleCustomerModel scheduleCustomerModel) { if (scheduleCustomerModel is null) { return(Json("Error: Object cannot be null.")); } if (!c_listOfBarbers.Contains(scheduleCustomerModel.BarberName)) { return(Json("Error: Barber must be one of the following: " + string.Join(", ", c_listOfBarbers))); } if (string.IsNullOrWhiteSpace(scheduleCustomerModel.Name)) { return(Json("Error: Must provide a customer name.")); } if (string.IsNullOrWhiteSpace(scheduleCustomerModel.PhoneNumber)) { return(Json("Error: Must provide a phone number.")); } // get list of already scheduled customers from session. List <ScheduledCustomerModel> currentScheduledCustomers = scheduledCustomers; // Check to see we aren't scheduling the same customer twice. if (currentScheduledCustomers.Any(a => a.Name.ToLower() == scheduleCustomerModel.Name.ToLower() && a.PhoneNumber == scheduleCustomerModel.PhoneNumber)) { return(Json("Warning: Customer is already scheduled.")); } ScheduledCustomerModel newScheduledCustomerModel = new ScheduledCustomerModel { AppointmentID = GetAppointmentId(), Name = scheduleCustomerModel.Name, PhoneNumber = scheduleCustomerModel.PhoneNumber, BarberNameRequested = scheduleCustomerModel.BarberName }; bool barberWasAvailable = false; // If the barber requested is not busy, assign them to that barber. if (!currentScheduledCustomers.Any(a => a.CurrentBarberAssigned == scheduleCustomerModel.BarberName)) { barberWasAvailable = true; newScheduledCustomerModel.CurrentBarberAssigned = scheduleCustomerModel.BarberName; } currentScheduledCustomers.Add(newScheduledCustomerModel); // update the session data. scheduledCustomers = currentScheduledCustomers; if (barberWasAvailable) { return(Json("Success: Customer is seeing barber.")); } else { int positionInLine = currentScheduledCustomers.Where(w => w.CurrentBarberAssigned is null).Count(); string ordinalFormatting = OrdinalUtility.ToOrdinal(positionInLine); // exclude the customers who are already currently assigned a barber. return(Json(String.Format("Success: Customer is {0}{1} in line.", positionInLine, ordinalFormatting))); } }