// GET: RepairOrders/Edit/5
        public async Task <ActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            RepairOrder repairOrder = await db.RepairOrders.Include(x => x.Customer)
                                      .Include(x => x.Repairman)
                                      .SingleOrDefaultAsync(x => x.ID == id);

            if (repairOrder == null)
            {
                return(HttpNotFound());
            }

            RepairOrdersViewModel repairOrderVM = new RepairOrdersViewModel
            {
                Customers   = await db.Customers.ToListAsync(),
                Repairmen   = await db.Repairmen.ToListAsync(),
                RepairOrder = repairOrder,
            };

            return(View(repairOrderVM));
        }
        public async Task <ActionResult> Edit(RepairOrdersViewModel repairOrderVM)
        {
            if (ModelState.IsValid)
            {
                RepairOrder repairOrder = await db.RepairOrders.Include(p => p.Customer)
                                          .Include(p => p.Repairman)
                                          .SingleOrDefaultAsync(p => p.ID == repairOrderVM.RepairOrder.ID);

                if (repairOrderVM.RepairOrder.Customer.ID != repairOrder.Customer.ID)
                {
                    db.Customers.Attach(repairOrderVM.RepairOrder.Customer);
                    repairOrder.Customer = repairOrderVM.RepairOrder.Customer;
                }

                if (repairOrderVM.RepairOrder.Repairman.ID != repairOrder.Repairman.ID)
                {
                    db.Repairmen.Attach(repairOrderVM.RepairOrder.Repairman);
                    repairOrder.Repairman = repairOrderVM.RepairOrder.Repairman;
                }

                repairOrder.RepairDescription = repairOrderVM.RepairOrder.RepairDescription;
                repairOrder.Status            = repairOrderVM.RepairOrder.Status;
                repairOrder.StartDate         = repairOrderVM.RepairOrder.StartDate;
                repairOrder.EndDate           = repairOrderVM.RepairOrder.EndDate;

                db.Entry(repairOrder).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            return(View(repairOrderVM));
        }
        // GET: RepairOrders/Create
        public async Task <ActionResult> Create()
        {
            RepairOrdersViewModel model = new RepairOrdersViewModel
            {
                Customers = await db.Customers.ToListAsync(),
                Repairmen = await db.Repairmen.ToListAsync(),
            };

            return(View(model));
        }
        public async Task <ActionResult> Create(RepairOrdersViewModel repairOrderVM)
        {
            repairOrderVM.Customers = await db.Customers.ToListAsync();

            repairOrderVM.Repairmen = await db.Repairmen.ToListAsync();

            if (ModelState.IsValid)
            {
                repairOrderVM.RepairOrder.Customer = await db.Customers.FindAsync(repairOrderVM.RepairOrder.Customer.ID);

                repairOrderVM.RepairOrder.Repairman = await db.Repairmen.FindAsync(repairOrderVM.RepairOrder.Repairman.ID);

                db.RepairOrders.Add(repairOrderVM.RepairOrder);
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            return(View(repairOrderVM));
        }