Example #1
0
        public JsonResult EditStatus(ProjectViewModel model)
        {
            var result = new OperationResult();

            var projectToUpdate = _projectRepository.GetProject(model.ProjectId);

            model.CustomerId  = projectToUpdate.CustomerId;
            model.ProjectName = projectToUpdate.Name;
            model.FoundryId   = projectToUpdate.FoundryId;

            switch (model.Status)
            {
            case "Open":
                model.IsOpen             = true;
                model.IsHold             = false;
                model.HoldExpirationDate = null;
                model.HoldNotes          = null;
                model.IsCanceled         = false;
                model.CancelNotes        = null;
                model.CanceledDate       = null;
                model.IsComplete         = false;
                model.CompletedDate      = null;
                break;

            case "On Hold":
                model.IsOpen             = false;
                model.IsHold             = true;
                model.HoldExpirationDate = model.HoldExpirationDate;
                model.HoldNotes          = model.HoldNotes;
                model.IsCanceled         = false;
                model.CancelNotes        = null;
                model.CanceledDate       = null;
                model.IsComplete         = false;
                model.CompletedDate      = null;

                foreach (var rfq in projectToUpdate.Rfqs)
                {
                    rfq.IsOpen             = false;
                    rfq.IsCanceled         = false;
                    rfq.CancelNotes        = null;
                    rfq.CanceledDate       = null;
                    rfq.IsHold             = true;
                    rfq.HoldExpirationDate = model.HoldExpirationDate;
                    rfq.HoldNotes          = model.HoldNotes;
                    _rfqRepository.UpdateRfq(rfq);
                }
                foreach (var quote in projectToUpdate.Quotes)
                {
                    quote.IsOpen             = false;
                    quote.IsCanceled         = false;
                    quote.CancelNotes        = null;
                    quote.CanceledDate       = null;
                    quote.IsHold             = true;
                    quote.HoldExpirationDate = model.HoldExpirationDate;
                    quote.HoldNotes          = model.HoldNotes;
                    _quoteRepository.UpdateQuote(quote);
                }
                foreach (var customerOrder in projectToUpdate.CustomerOrders)
                {
                    customerOrder.IsOpen             = false;
                    customerOrder.IsCanceled         = false;
                    customerOrder.CancelNotes        = null;
                    customerOrder.CanceledDate       = null;
                    customerOrder.IsComplete         = false;
                    customerOrder.IsHold             = true;
                    customerOrder.HoldExpirationDate = model.HoldExpirationDate;
                    customerOrder.HoldNotes          = model.HoldNotes;
                    _customerOrderRepository.UpdateCustomerOrder(customerOrder);
                }
                foreach (var foundryOrder in projectToUpdate.FoundryOrders)
                {
                    foundryOrder.IsOpen             = false;
                    foundryOrder.IsCanceled         = false;
                    foundryOrder.CancelNotes        = null;
                    foundryOrder.CanceledDate       = null;
                    foundryOrder.IsComplete         = false;
                    foundryOrder.IsHold             = true;
                    foundryOrder.HoldExpirationDate = model.HoldExpirationDate;
                    foundryOrder.HoldNotes          = model.HoldNotes;
                    _foundryOrderRepository.UpdateFoundryOrder(foundryOrder);
                }
                break;

            case "Canceled":
                model.IsOpen             = false;
                model.IsHold             = false;
                model.HoldExpirationDate = null;
                model.HoldNotes          = null;
                model.IsCanceled         = true;
                model.CancelNotes        = model.CancelNotes;
                model.CanceledDate       = DateTime.Now;
                model.IsComplete         = false;
                model.CompletedDate      = null;

                foreach (var rfq in projectToUpdate.Rfqs)
                {
                    rfq.IsOpen             = false;
                    rfq.IsHold             = false;
                    rfq.HoldExpirationDate = null;
                    rfq.HoldNotes          = null;
                    rfq.IsCanceled         = true;
                    rfq.CancelNotes        = model.CancelNotes;
                    rfq.CanceledDate       = DateTime.Now;
                    _rfqRepository.UpdateRfq(rfq);
                }
                foreach (var quote in projectToUpdate.Quotes)
                {
                    quote.IsOpen             = false;
                    quote.IsHold             = false;
                    quote.HoldExpirationDate = null;
                    quote.HoldNotes          = null;
                    quote.IsCanceled         = true;
                    quote.CancelNotes        = model.CancelNotes;
                    quote.CanceledDate       = DateTime.Now;
                    _quoteRepository.UpdateQuote(quote);
                }
                foreach (var customerOrder in projectToUpdate.CustomerOrders)
                {
                    customerOrder.IsOpen             = false;
                    customerOrder.IsHold             = false;
                    customerOrder.HoldExpirationDate = null;
                    customerOrder.HoldNotes          = null;
                    customerOrder.IsCanceled         = true;
                    customerOrder.CancelNotes        = model.CancelNotes;
                    customerOrder.CanceledDate       = DateTime.Now;
                    _customerOrderRepository.UpdateCustomerOrder(customerOrder);
                }
                foreach (var foundryOrder in projectToUpdate.FoundryOrders)
                {
                    foundryOrder.IsOpen             = false;
                    foundryOrder.IsHold             = false;
                    foundryOrder.HoldExpirationDate = null;
                    foundryOrder.HoldNotes          = null;
                    foundryOrder.IsCanceled         = true;
                    foundryOrder.CancelNotes        = model.CancelNotes;
                    foundryOrder.CanceledDate       = DateTime.Now;
                    _foundryOrderRepository.UpdateFoundryOrder(foundryOrder);
                }
                break;

            case "Complete":
                model.IsOpen             = false;
                model.IsHold             = false;
                model.HoldExpirationDate = null;
                model.HoldNotes          = null;
                model.IsCanceled         = true;
                model.CancelNotes        = null;
                model.CanceledDate       = null;
                model.IsComplete         = true;
                model.CompletedDate      = DateTime.Now;
                break;
            }

            Project project = new ProjectConverter().ConvertToUpdate(model);

            result = _projectRepository.UpdateProject(project);

            if (result.Success)
            {
                model.Success    = true;
                model.Status     = project.IsCanceled ? "Canceled" : project.IsComplete ? "Complete" : project.IsHold ? "On Hold" : "N/A";
                model.IsHold     = project.IsHold;
                model.IsCanceled = project.IsCanceled;
            }
            else
            {
                model.Success = false;
                model.Message = result.Message;
            }

            return(Json(model, JsonRequestBehavior.AllowGet));
        }