Exemple #1
0
        public IHttpActionResult RegisterDetailer(RegistrationModel registration)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = new User
            {
                UserName = registration.Username
            };

            var detailer = new Detailer
            {
                Address      = registration.Address,
                Cellphone    = registration.Cellphone,
                EmailAddress = registration.EmailAddress,
                FirstName    = registration.FirstName,
                LastName     = registration.LastName,
                Location     = LocationConverter.GeocodeAddress(registration.Address)
            };

            user.Detailer = detailer;

            var result = _userManager.Create(user, registration.Password);

            if (result.Succeeded)
            {
                return(Ok());
            }
            else
            {
                return(BadRequest("Invalid user registration"));
            }
        }
Exemple #2
0
        static void Main(string[] args)
        {
            var mechanic = new Mechanic();
            var detailer = new Detailer();
            var wheels   = new WheelSpecialist();
            var qa       = new QualityControl();

            qa.SetNextServiceHandler(detailer);
            wheels.SetNextServiceHandler(qa);
            mechanic.SetNextServiceHandler(wheels);

            Console.WriteLine("Car 1 is dirty");
            mechanic.Service(new Car {
                Requirements = ServiceRequirements.Dirty
            });

            Console.WriteLine();

            Console.WriteLine("Car 2 requires full service");
            mechanic.Service(new Car
            {
                Requirements = ServiceRequirements.Dirty |
                               ServiceRequirements.EngineTune |
                               ServiceRequirements.TestDrive |
                               ServiceRequirements.WheelAlignment
            });
            Console.Read();
        }
Exemple #3
0
        public IHttpActionResult PutDetailer(int id, Detailer detailer)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != detailer.DetailerId)
            {
                return(BadRequest());
            }

            var dbDetailer = db.Detailers.Find(id);

            dbDetailer.DetailerId   = detailer.DetailerId;
            dbDetailer.FirstName    = detailer.FirstName;
            dbDetailer.LastName     = detailer.LastName;
            dbDetailer.Address      = detailer.Address;
            dbDetailer.EmailAddress = detailer.EmailAddress;
            // Loops over the incoming availabilities
            foreach (var Availability in detailer.DetailerAvailabilities)
            {
                // For each on grab databases version of availability
                var dbAvailability = dbDetailer.DetailerAvailabilities.FirstOrDefault(avail => avail.DetailerId == Availability.DetailerId && avail.DayOfWeekId == Availability.DayOfWeekId);
                // Update databases version with new info
                dbAvailability.Start = Availability.Start;
                dbAvailability.End   = Availability.End;
            }
            dbDetailer.Cellphone = detailer.Cellphone;
            dbDetailer.Location  = LocationConverter.GeocodeAddress(dbDetailer.Address);

            db.Entry(dbDetailer).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!DetailerExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Exemple #4
0
        public IHttpActionResult DeleteDetailer(int id)
        {
            Detailer detailer = db.Detailers.Find(id);

            if (detailer == null)
            {
                return(NotFound());
            }

            db.Detailers.Remove(detailer);
            db.SaveChanges();

            return(Ok(detailer));
        }
Exemple #5
0
        public IHttpActionResult GetDetailer(int id)
        {
            Detailer detailer = db.Detailers.Find(id);

            if (detailer == null)
            {
                return(NotFound());
            }

            return(Ok(new
            {
                detailer.DetailerId,
                detailer.Rating,
                detailer.Address,
                detailer.EmailAddress,
                detailer.Cellphone,
                Availability = detailer.DetailerAvailabilities.Select(da => new
                {
                    DayOfWeek = da.DayOfWeek.Weekday,
                    da.Start,
                    da.DayOfWeekId,
                    da.DetailerId,
                    da.End
                }),
                detailer.FirstName,
                detailer.LastName,
                Services = detailer.DetailerServices.Select(ds => new
                {
                    ds.Service.Cost,
                    ds.Service.ServiceType
                }),
                Location = new
                {
                    detailer.Location.Latitude,
                    detailer.Location.Longitude
                },
                Appointments = detailer.Appointments.Select(da => new
                {
                    da.Customer.FirstName,
                    da.Customer.LastName,
                    da.Customer.Address,
                    da.AppointmentDate,
                    da.Customer.Cellphone
                })
                               // add securite routes
            }));
        }
Exemple #6
0
        public IHttpActionResult PostDetailer(Detailer detailer)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.Detailers.Add(detailer);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = detailer.DetailerId }, new
            {
                detailer.DetailerId,
                detailer.Rating,
                detailer.Address,
                detailer.EmailAddress,
                Availability = detailer.DetailerAvailabilities.Select(da => new
                {
                    DayOfWeek = da.DayOfWeek.Weekday,
                    da.Start,
                    da.DayOfWeekId,
                    da.DetailerId,
                    da.End
                }),
                detailer.Cellphone,
                detailer.FirstName,
                detailer.LastName,
                Services = detailer.DetailerServices.Select(ds => new
                {
                    ds.Service.Cost,
                    ds.Service.ServiceType
                }),
                Location = new
                {
                    detailer.Location.Latitude,
                    detailer.Location.Longitude
                }
            }));
        }
Exemple #7
0
 private async void btnProcess_ClickAsync(object sender, EventArgs e)
 {
     var detailer = new Detailer(this.ui);
     await detailer.Process();
 }
Exemple #8
0
        protected override void Seed(WashMyCar.API.Data.WashMyCarDataContext context)
        {
            var    userStore   = new UserStore <User>(context);
            var    userManager = new UserManager <User>(userStore);
            Random random      = new Random();

            string[] addresses = new string[]
            {
                "101 W Broadway, San Diego CA 92101",
                "13030 Salmon River Road, San Diego CA 92129",
                "1930 Georgia Court, San Diego CA 92104",
                "3872 Jewell Street, San Diego CA 92109",
                "47 Southfield Road, Pocklington, York YO42 2XE"
            };

            if (context.Roles.Count() == 0)
            {
                context.Roles.Add(new IdentityRole
                {
                    Name = "Detailer"
                });

                context.Roles.Add(new IdentityRole
                {
                    Name = "Customer"
                });

                context.SaveChanges();
            }
            if (context.Services.Count() == 0)
            {
                Dictionary <string, decimal> services = new Dictionary <string, decimal>()
                {
                    { "Handwash", 39.99M },
                    { "Handwax", 69.99M },
                    { "Complete Interior", 129.99M },
                    { "Complete Exterior", 179.99M },
                    { "Steam Clean Interior", 119.99M },
                    { "Leather Treatment", 59.99M },
                    { "Deluxe Detail", 239.99M },
                    { "Light and Rim Restoration", 49.99M }
                };

                foreach (KeyValuePair <string, decimal> service in services)
                {
                    context.Services.Add(new Service
                    {
                        ServiceType = service.Key,
                        Cost        = service.Value
                    });
                }

                context.SaveChanges();
            }
            if (context.DayOfWeeks.Count() == 0)
            {
                string[] weekday = new string[] { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
                for (int i = 0; i < weekday.Length; i++)
                {
                    context.DayOfWeeks.Add(new Models.DayOfWeek
                    {
                        Weekday = weekday[i]
                    });
                }
                context.SaveChanges();
            }
            if (context.VehicleTypes.Count() == 0)
            {
                string[]  vehicletype = new string[] { "Coupe", "Sedan", "SUV" };
                decimal[] multiplier  = new decimal[] { 1, 1.2M, 1.3M };
                for (int i = 0; i < vehicletype.Length; i++)
                {
                    context.VehicleTypes.Add(new Models.VehicleType
                    {
                        VehicleSize = vehicletype[i],
                        Multiplier  = multiplier[i]
                    });
                }
                context.SaveChanges();
            }
            if (context.Customers.Count() == 0)
            {
                for (int i = 0; i < 5; i++)
                {
                    string email = Faker.InternetFaker.Email();
                    string phone = Faker.PhoneFaker.Phone();

                    var user = new User
                    {
                        Email       = email,
                        PhoneNumber = phone,
                        UserName    = $"customer{i + 1}",
                        Customer    = new Customer
                        {
                            Cellphone    = phone,
                            EmailAddress = email,
                            FirstName    = Faker.NameFaker.FirstName(),
                            LastName     = Faker.NameFaker.LastName(),
                            Address      = addresses[i],
                            Location     = LocationConverter.GeocodeAddress(addresses[i])
                        }
                    };

                    userManager.Create(user, "password123");
                    userManager.AddToRole(user.Id, "Customer");
                }
            }
            if (context.Detailers.Count() == 0)
            {
                for (int i = 0; i < 5; i++)
                {
                    string email = Faker.InternetFaker.Email();
                    string phone = Faker.PhoneFaker.Phone();

                    var detailer = new Detailer
                    {
                        Cellphone    = phone,
                        EmailAddress = email,
                        FirstName    = Faker.NameFaker.FirstName(),
                        LastName     = Faker.NameFaker.LastName(),
                        Address      = addresses[i],
                        Location     = LocationConverter.GeocodeAddress(addresses[i])
                    };

                    // availability
                    for (int j = 2; j < 7; j++)
                    {
                        detailer.DetailerAvailabilities.Add(new DetailerAvailability
                        {
                            DayOfWeekId = j,
                            Start       = 9,
                            End         = 5
                        });
                    }

                    // services
                    for (int j = 0; j < Faker.NumberFaker.Number(1, context.Services.Count()); j++)
                    {
                        // grab a random service from db
                        var service = context.Services.Find(j + 1);
                        if (detailer.DetailerServices.All(x => x.ServiceId != service.ServiceId))
                        {
                            detailer.DetailerServices.Add(new DetailerService
                            {
                                Service = service
                            });
                        }
                    }

                    var user = new User
                    {
                        Email       = email,
                        PhoneNumber = phone,
                        UserName    = $"detailer{i + 1}",
                        Detailer    = detailer
                    };
                    userManager.Create(user, "password123");
                    userManager.AddToRole(user.Id, "Detailer");
                }
            }
            if (context.Appointments.Count() == 0)
            {
                foreach (var detailer in context.Detailers)
                {
                    var randomNumber = Faker.NumberFaker.Number(1, context.Customers.Count());

                    for (int i = 0; i < randomNumber; i++)
                    {
                        var apptDate = DateTime.Now.AddDays(Faker.NumberFaker.Number(-14, 14));

                        var appt = new Appointment
                        {
                            AppointmentDate = apptDate,
                            CancelledDate   = Faker.BooleanFaker.Boolean() ? (DateTime?)apptDate.AddDays(-3) : null,
                            ConfirmedDate   = Faker.BooleanFaker.Boolean() ? (DateTime?)apptDate.AddDays(-3) : null,
                            CustomerId      = Faker.NumberFaker.Number(1, context.Customers.Count()),
                            Detailer        = detailer,
                            VehicleTypeId   = Faker.NumberFaker.Number(1, context.VehicleTypes.Count()),
                            Rating          = Faker.BooleanFaker.Boolean() ? (int?)Faker.NumberFaker.Number(1, 5) : null
                        };

                        // services
                        for (int j = 0; j < Faker.NumberFaker.Number(1, context.Services.Count()); j++)
                        {
                            appt.AppointmentServices.Add(new AppointmentService
                            {
                                Service = context.Services.ToArray()[j]
                            });
                        }

                        context.Appointments.Add(appt);
                    }
                }

                context.SaveChanges();
            }
        }