Exemplo n.º 1
0
        public bool GeneratDispatchPlan(int transportOrderId)
        {
            var transportOrder =
                            _unitOfWork.TransportOrderRepository.Get(
                                t =>
                                t.TransportOrderID == transportOrderId && t.StatusID == (int)TransportOrderStatus.Approved).FirstOrDefault();
            if (transportOrder == null) return false;

            var transportOrderDetails =
                _unitOfWork.TransportOrderDetailRepository.Get(t => t.TransportOrderID == transportOrderId, null, "ReliefRequisition").ToList();

            foreach (var transportOrderDetail in transportOrderDetails)
            {
                var requisition = transportOrderDetail.ReliefRequisition;
                var fdpId = transportOrderDetail.FdpID;
                var requisitionDetail =
                    _unitOfWork.ReliefRequisitionDetailRepository.Get(
                        t => t.RequisitionID == requisition.RequisitionID && t.FDPID == fdpId).FirstOrDefault();
                var dispatchAllocation = new DispatchAllocation();
                dispatchAllocation.DispatchAllocationID = Guid.NewGuid();

                dispatchAllocation.Beneficiery = requisitionDetail != null ? requisitionDetail.BenficiaryNo : 0;
                dispatchAllocation.Amount = transportOrderDetail.QuantityQtl;
                dispatchAllocation.BidRefNo = transportOrder.BidDocumentNo;
                dispatchAllocation.CommodityID = transportOrderDetail.CommodityID;
                dispatchAllocation.ContractEndDate = transportOrder.StartDate;
                dispatchAllocation.ContractEndDate = transportOrder.EndDate;
                dispatchAllocation.DonorID = transportOrderDetail.DonorID;
                dispatchAllocation.FDPID = transportOrderDetail.FdpID;
                dispatchAllocation.HubID = transportOrderDetail.SourceWarehouseID;
                dispatchAllocation.TransporterID = transportOrder.TransporterID;
               // dispatchAllocation.IsClosed = false;
                dispatchAllocation.Month = requisition.Month;
                dispatchAllocation.Round = requisition.Round;

                dispatchAllocation.TransportOrderID = transportOrderId;
                dispatchAllocation.ProgramID = requisition.ProgramID;
                dispatchAllocation.RequisitionNo = requisition.RequisitionNo;
                dispatchAllocation.RequisitionId = requisition.RequisitionID;
                dispatchAllocation.PartitionID = 0;
                var sipc =
                    _unitOfWork.SIPCAllocationRepository.FindBy(
                        t => t.RequisitionDetailID == requisitionDetail.RequisitionDetailID);
                var si = sipc.Find(t => t.AllocationType == "SI");
                if (si != null)
                    dispatchAllocation.ProjectCodeID = si.Code;
                var pc = sipc.Find(t => t.AllocationType == "PC");
                if (pc != null)
                    dispatchAllocation.ShippingInstructionID = pc.Code;
                //dispatchAllocation.Unit //i have no idea where to get it
                // dispatchAllocation.StoreID  //Would be set null and filled by user later
                //dispatchAllocation.Year= requisition.Year ; //Year is not available
                _unitOfWork.DispatchAllocationRepository.Add(dispatchAllocation);
            }
            transportOrder.StatusID = (int)TransportOrderStatus.Closed;
            _unitOfWork.Save();

            return true;
        }