Exemple #1
0
        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())));
            }
        }
Exemple #2
0
        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)));
            }
        }