public StandardRequestResultModel DeleteItemFromItemRequest(ItemToItemRequestModel item)
        {
            var checkQuery = _itemRequestFormDataAccess.ValidateIfMappingExists(item.ItemId, item.ItemRequestId);
            StandardRequestResultModel result = new StandardRequestResultModel();

            if (checkQuery == null)
            {
                result.isSuccess = false;
                result.Message   = "Item does not exist in Item Request.";

                return(result);
            }
            else
            {
                var deleteQuery = _itemRequestFormDataAccess.DeleteItemFromItemRequest(checkQuery.Id);

                if (deleteQuery)
                {
                    result.isSuccess = true;
                    result.Message   = "Item successfully removed from Item Request.";
                }
                else
                {
                    result.isSuccess = false;
                    result.Message   = "Error occured while removing Item from Item Request.";
                }

                return(result);
            }
        }
        public StandardRequestResultModel AttachItemToItemRequest(ItemToItemRequestModel item)
        {
            var checkQuery = _itemRequestFormDataAccess.ValidateIfMappingExists(item.ItemId, item.ItemRequestId);
            StandardRequestResultModel result = new StandardRequestResultModel();

            if (checkQuery != null)
            {
                result.isSuccess = false;
                result.Message   = "Item already exists in Item Request.";

                return(result);
            }

            else
            {
                ItemRequestFormMapping query = new ItemRequestFormMapping();

                query.ItemID         = item.ItemId;
                query.IRFID          = item.ItemRequestId;
                query.CreateUserName = "******";
                query.CreateDttm     = DateTime.UtcNow;
                query.UpdateUserName = "******";
                query.UpdateDttm     = DateTime.UtcNow;

                var addQuery = _itemRequestFormDataAccess.AttachItemToItemRequest(query);


                if (addQuery)
                {
                    result.isSuccess = true;
                    result.Message   = "Item added to Item Request.";
                }
                else
                {
                    result.isSuccess = false;
                    result.Message   = "Error while adding Item to Item Request.";
                }
                return(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);
        }