Ejemplo n.º 1
0
        public IActionResult Upsert(MaintenanceLineItemViewModel mliVM)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    if (mliVM.MaintenanceLineItem.Id == 0)
                    {
                        var garageAssignment = _unitOfWork.GarageAssignment.
                                               GetFirstOrDefault(u => u.BusId == mliVM.MaintenanceLineItem.BusId && u.CheckOut == null, includeProperties: "Bus");

                        mliVM.MaintenanceLineItem.GarageId = garageAssignment.GarageId;
                        mliVM.MaintenanceLineItem.Bus      = garageAssignment.Bus;
                        //Update the MLI status to waiting for technician
                        mliVM.MaintenanceLineItem.Status = Constants.RequestStatus["Waiting for Technician"];
                        //Update the Current status of the bus to scheduled for maintenance
                        mliVM.MaintenanceLineItem.Bus.CurrentStatus = Constants.BusStatus["Scheduled for maintenance"];
                        _unitOfWork.MaintenanceLineItem.Add(mliVM.MaintenanceLineItem);
                    }
                    else
                    {
                        var mli = _unitOfWork.MaintenanceLineItem.GetFirstOrDefault(u => u.Id == mliVM.MaintenanceLineItem.Id, includeProperties: "Bus");
                        mli.Status = mliVM.MaintenanceLineItem.Status;
                        if (mli.Status == Constants.RequestStatus["Complete"])
                        {
                            //Mark completion date for the Maintenance Line Item
                            mli.CompletedOn = DateTime.Today.Date;
                            // Check if there are any pending maintenance requests for the given bus
                            var pendingMLI = _unitOfWork.MaintenanceLineItem.GetAll(u => u.Id != mli.Id &&
                                                                                    u.BusId == mli.BusId && u.GarageId == mli.GarageId &&
                                                                                    u.Status != Constants.RequestStatus["Complete"]);

                            // Update bus status to ready for use if there are no pending items
                            if (pendingMLI.Count() == 0)
                            {
                                mli.Bus.CurrentStatus = Constants.BusStatus["Ready for use"];
                            }
                        }
                        //Update the status of the bus to Under going repairs if the maintenance line item is updated to in progress
                        if (mli.Status == Constants.RequestStatus["In Progress"])
                        {
                            mli.Bus.CurrentStatus = Constants.BusStatus["Undergoing repairs"];
                        }
                        _unitOfWork.MaintenanceLineItem.Update(mli);
                    }
                    _unitOfWork.Save();
                    _unitOfWork.Dispose();
                    return(RedirectToAction(nameof(Index)));
                }
            }
            catch (Exception ex)
            {
                var evm = new ErrorViewModel();
                evm.ErrorMessage = ex.Message.ToString();
                return(View("Error", evm));
            }

            return(View(mliVM));
        }
Ejemplo n.º 2
0
        //Insert or Update action for Maintenance line item
        public IActionResult Upsert(int?id)
        {
            MaintenanceLineItemViewModel mliVM = new MaintenanceLineItemViewModel()
            {
                MaintenanceLineItem = new MaintenanceLineItem(),
                BusList             = _unitOfWork.GarageAssignment.GetAll(b => b.CheckOut == null, includeProperties: "Bus").
                                      Select(i => new SelectListItem
                {
                    Text  = i.Bus.RegistrationNumber,
                    Value = i.Bus.Id.ToString()
                }),
                RequestTypeList = _unitOfWork.MaintenanceRequestType.GetAll(b => b.IsActive == true).Select(i => new SelectListItem
                {
                    Text  = i.Name,
                    Value = i.Id.ToString()
                })
            };

            try
            {
                if (id == null)
                {
                    return(View(mliVM));
                }
                mliVM.MaintenanceLineItem = _unitOfWork.MaintenanceLineItem.Get(id.GetValueOrDefault());
                if (mliVM == null)
                {
                    throw new Exception("Unable to find the maintenance line item");
                }
            }
            catch (Exception ex)
            {
                var evm = new ErrorViewModel();
                evm.ErrorMessage = ex.Message.ToString();
                return(View("Error", evm));
            }

            return(View(mliVM));
        }