Example #1
0
        public IHttpActionResult ValidateStatusChangeItemRequest([FromBody] ItemRequestStatusChangeModel itemRequest)
        {
            var container = ContainerConfig.Configure();

            using (var scope = container.BeginLifetimeScope())
            {
                var app = scope.Resolve <IItemRequestFormBusinessLayer>();

                var result = app.ValidateStatusChangeItemRequest(itemRequest);

                return(Json(result));
            }
        }
        public StandardRequestResultModel ValidateStatusChangeItemRequest(ItemRequestStatusChangeModel itemRequest)
        {
            StandardRequestResultModel result = new StandardRequestResultModel();

            var selectedCodeDetail = _itemRequestFormDataAccess.GetAllTicketStatus()
                                     .CodeDetails.Where(x => x.Id == itemRequest.StatusCd)
                                     .Select(x => x.CodeValue).FirstOrDefault();

            var quotationSentCd = _itemRequestFormDataAccess.GetAllTicketStatus()
                                  .CodeDetails.Where(x => x.CodeValue.Equals("Quotations Sent"))
                                  .Select(x => x.Id).FirstOrDefault();

            var quotationCompleteCd = _itemRequestFormDataAccess.GetAllTicketStatus()
                                      .CodeDetails.Where(x => x.CodeValue.Equals("Completed"))
                                      .Select(x => x.Id).FirstOrDefault();

            var selectedItemRequest = _itemRequestFormDataAccess.GetItemRequestFormById(itemRequest.Id);

            switch (selectedCodeDetail)
            {
            case "Supervisor Review":
                int quotationCount = selectedItemRequest.Quotations.Count;

                if (quotationCount > 0)
                {
                    result.isSuccess = true;
                }
                else
                {
                    result.isSuccess = false;
                    result.Message   = "Item Request does not have Quotations for review.";
                }
                break;

            case "Quotations Sent":
                int quotesSent = selectedItemRequest.Quotations.Where(x => x.StatusCd == quotationSentCd).Count();

                if (quotesSent > 0)
                {
                    result.isSuccess = true;
                }
                else
                {
                    result.isSuccess = false;
                    result.Message   = "Item Request has Quotations not set to Quotations Sent status.";
                }
                break;

            case "Completed":
                int quotesComplete = selectedItemRequest.Quotations.Where(x => x.StatusCd == quotationCompleteCd).Count();

                if (quotesComplete > 0)
                {
                    result.isSuccess = true;
                }
                else
                {
                    result.isSuccess = false;
                    result.Message   = "Item Request has Quotations not set to Completed status.";
                }
                break;

            case "Cancelled":
                var isCancelled = _itemRequestFormDataAccess.CancelItemRequest(itemRequest.Id);

                result.isSuccess = isCancelled;
                result.Message   = isCancelled ? "Item Request " + itemRequest.Id + " cancelled." : "Item Request " + itemRequest.Id + " already cancelled.";
                break;

            case "Rejected":
                var isRejected = _itemRequestFormDataAccess.RejectItemRequest(itemRequest.Id);

                result.isSuccess = isRejected;
                result.Message   = isRejected ? "Item Request " + itemRequest.Id + " set to rejected status." : "Item Request " + itemRequest.Id + " already rejected.";
                break;

            default:
                if (selectedCodeDetail == selectedItemRequest.CodeDetail.CodeValue)
                {
                    result.isSuccess = true;
                    result.Message   = "";
                }
                else
                {
                    result.isSuccess = false;
                    result.Message   = "Unknown ticket status.";
                }
                break;
            }

            return(result);
        }