public AppointmentController(IAppointmentsDomain appointmentsDomain, IPatientDomain patientDomain, IProviderDomain providerDomain, IServiceDomain serviceDomain) : base("/appointments")
        {
            Get["/"]              = parameters => new JsonResponse(appointmentsDomain.GetAppointments(), new DefaultJsonSerializer());
            Get["/{id}"]          = parameters => new JsonResponse(appointmentsDomain.GetAppointment(parameters.id), new DefaultJsonSerializer());
            Get["/patient/{id}"]  = parameters => new JsonResponse(appointmentsDomain.GetPatientAppointments(parameters.id), new DefaultJsonSerializer());
            Get["/provider/{id}"] = parameters => new JsonResponse(appointmentsDomain.GetProviderAppointments(parameters.id), new DefaultJsonSerializer());
            Post["/"]             = parameters =>
            {
                var appointmentModel = this.Bind <AppointmentModel>();
                var response         = appointmentModel.ValidateModel();
                if (response != null)
                {
                    return(response);
                }

                var appointment = new Appointment
                {
                    Patient                  = patientDomain.GetPatient(appointmentModel.PatientId),
                    Provider                 = providerDomain.GetProvider(appointmentModel.ProviderId),
                    Service                  = serviceDomain.GetService(appointmentModel.ServiceId),
                    ReasonForVisit           = appointmentModel.ReasonForVisit,
                    RequestedAppointmentDate = DateTime.Parse(appointmentModel.RequestedAppointmentDate)
                };

                try
                {
                    var validationResponse = ValidateInputModel(appointment);
                    if (validationResponse != null)
                    {
                        return(validationResponse);
                    }
                    appointmentsDomain.SetAppointment(appointment);
                }
                catch (ApplicationException ex)
                {
                    return(new Response()
                    {
                        StatusCode = HttpStatusCode.BadRequest
                    }.WithHeader("Error", ex.Message));
                }


                string url = string.Format("{0}/{1}", this.Context.Request.Url, appointment.Id);

                return(new Response()
                {
                    StatusCode = HttpStatusCode.Accepted
                }.WithHeader("Location", url));
            };
        }
Example #2
0
        public void SeedData()
        {
            var provider_one = new Provider
            {
                Name = "Dr. Oz",
                CertificationLevel = 10
            };

            var provider_two = new Provider
            {
                Name = "Dr. Jekyll",
                CertificationLevel = 10
            };

            var provider_three = new Provider
            {
                Name = "Dr. Houser",
                CertificationLevel = 1
            };

            var patient_one = new Patient
            {
                Name = "Dorothy",
                Age  = 16
            };

            var patient_two = new Patient
            {
                Name = "Glenda",
                Age  = 99
            };

            var service_one = new Service
            {
                Name                       = "A New Heart",
                Duration                   = TimeSpan.FromHours(5),
                MinimumRequiredAge         = 16,
                RequiredCertificationLevel = 10
            };

            var service_two = new Service
            {
                Name                       = "Consultation",
                Duration                   = TimeSpan.FromMinutes(30),
                MinimumRequiredAge         = 18,
                RequiredCertificationLevel = 10
            };

            provider_one   = _providerDomain.CreateProvider(provider_one);
            provider_two   = _providerDomain.CreateProvider(provider_two);
            provider_three = _providerDomain.CreateProvider(provider_three);
            patient_one    = _patientDomain.CreatePatient(patient_one);
            patient_two    = _patientDomain.CreatePatient(patient_two);
            service_one    = _serviceDomain.CreateService(service_one);
            service_two    = _serviceDomain.CreateService(service_two);

            var appointment = new Appointment
            {
                Patient                  = patient_one,
                Provider                 = provider_one,
                Service                  = service_one,
                ReasonForVisit           = "There's no place like home",
                RequestedAppointmentDate = DateTime.Parse("2000/01/01 09:00:00.000"),
            };

            _appointmentsDomain.SetAppointment(appointment);
        }