コード例 #1
0
ファイル: DispatchService.cs プロジェクト: FishAbe/cats
        public DispatchViewModel CreateDispatchFromDispatchAllocation(Guid dispatchAllocationId,decimal quantityInUnit)
        {
            var dispatchAllocation = _unitOfWork.DispatchAllocationRepository.FindById(dispatchAllocationId);

            var dispatch = new DispatchViewModel();
            dispatch.BidNumber = dispatchAllocation.BidRefNo;
            dispatch.CreatedDate = DateTime.Today;
            dispatch.DispatchAllocationID = dispatchAllocation.DispatchAllocationID;
            dispatch.DispatchDate = DateTime.Today;
            //dispatch.DispatchID = Guid.NewGuid();
            dispatch.DispatchedByStoreMan = string.Empty;
            dispatch.DriverName = string.Empty;
            dispatch.FDPID = dispatchAllocation.FDPID;
            dispatch.GIN = string.Empty;
            dispatch.HubID = dispatchAllocation.HubID;
            if(dispatchAllocation.ProgramID.HasValue) dispatch.ProgramID = dispatchAllocation.ProgramID.Value;
            if (dispatchAllocation.Month.HasValue)
                dispatch.Month = dispatchAllocation.Month.Value;
            if (dispatchAllocation.Year.HasValue)
                dispatch.Year = dispatchAllocation.Year.Value;
            dispatch.PlateNo_Prime = string.Empty;
            dispatch.PlateNo_Trailer = string.Empty;
            dispatch.Remark = string.Empty;
            dispatch.RequisitionNo = dispatchAllocation.RequisitionNo;
            dispatch.RequisitionId = dispatchAllocation.RequisitionId;
            dispatch.ProgramID = dispatchAllocation.ProgramID.HasValue?dispatchAllocation.ProgramID.Value:0;
            if (dispatchAllocation.Round.HasValue)
                dispatch.Round = dispatchAllocation.Round.Value;
            if (dispatchAllocation.TransporterID.HasValue)
                dispatch.TransporterID = dispatchAllocation.TransporterID.Value;

            dispatch.WeighBridgeTicketNumber = string.Empty;

              //  Dispatch dispatchDetail = new DispatchDetail();

            var parentCommodityId =
                _unitOfWork.CommodityRepository.FindById(dispatchAllocation.CommodityID).ParentID ??
                dispatchAllocation.CommodityID;

            dispatch.CommodityID = parentCommodityId;
            dispatch.CommodityChildID = dispatchAllocation.CommodityID;
            dispatch.Commodity = dispatchAllocation.Commodity.Name;
            //dispatch.DispatchDetailID = Guid.NewGuid();
            dispatch.DispatchID = dispatch.DispatchID;
            dispatch.Quantity = 0;
            dispatch.QuantityInUnit = 0;
            dispatch.UnitID = dispatchAllocation.Unit;
            dispatch.ShippingInstructionID = dispatchAllocation.ShippingInstructionID;
            dispatch.ProjectCodeID = dispatchAllocation.ProjectCodeID;
               // dispatch.PartitionId = 0;

            //dispatch.DispatchDetails.Add(dispatchDetail);
            dispatch.plannedAmount = dispatchAllocation.Amount;
            return dispatch;
        }
コード例 #2
0
        public static DispatchViewModel BindDispatchViewModelBinder(Dispatch dispatch)
        {
            var dispatchViewModel = new DispatchViewModel();
            var dispatchDetail = dispatch.DispatchDetails.FirstOrDefault();
            dispatchViewModel.BidNumber = dispatch.BidNumber;
            dispatchViewModel.DispatchDate = dispatch.DispatchDate;
            dispatchViewModel.DispatchID = dispatch.DispatchID;
            dispatchViewModel.DispatchedByStoreMan = dispatch.DispatchedByStoreMan;
            dispatchViewModel.DriverName = dispatch.DriverName;
            dispatchViewModel.FDP = dispatch.FDP.Name;
            dispatchViewModel.GIN = dispatch.GIN;
            dispatchViewModel.Month = dispatch.PeriodMonth;
            dispatchViewModel.PlateNo_Prime = dispatch.PlateNo_Prime;
            dispatchViewModel.PlateNo_Trailer = dispatch.PlateNo_Trailer;
            //dispatchViewModel.Program = dispatch.program;

            dispatchViewModel.Remark = dispatch.Remark;
            dispatchViewModel.RequisitionNo = dispatch.RequisitionNo;
            dispatchViewModel.Round = dispatch.Round;

            dispatchViewModel.Type = dispatch.Type;
            dispatchViewModel.WeighBridgeTicketNumber = dispatch.WeighBridgeTicketNumber;
            dispatchViewModel.Year = dispatch.PeriodYear;
            if (dispatch.DispatchAllocation.ShippingInstruction != null)
                dispatchViewModel.SINumber = dispatch.DispatchAllocation.ShippingInstruction.Value;
            if (dispatch.DispatchAllocation.ProjectCode != null)
                dispatchViewModel.ProjectNumber = dispatch.DispatchAllocation.ProjectCode.Value;
            //if (dispatchDetail != null)
            //{
            //    dispatchViewModel.CommodityID = dispatchDetail.CommodityID;
            //    dispatchViewModel.Commodity = dispatchDetail.Commodity.Name;

            //}
            if(dispatch.DispatchAllocationID.HasValue)
            dispatchViewModel.DispatchAllocationID = dispatch.DispatchAllocationID.Value;
            return dispatchViewModel;
        }
コード例 #3
0
        private List<DispatchViewModel> MapDispatchToDispatchViewModel(List<Dispatch> dispatches )
        {
            List< DispatchViewModel> dispatchViewModels=new List<DispatchViewModel>();
            foreach (var dispatch in dispatches)
            {
                var id1 = dispatch.DispatchAllocationID.Value;
               var dispatchAllocation = _unitOfWork.DispatchAllocationRepository.Get(t=>t.DispatchAllocationID==id1,null,"Program").FirstOrDefault();

                var dispatchViewModel = new DispatchViewModel();
                dispatchViewModel.BidNumber = dispatch.BidNumber;
                dispatchViewModel.CreatedDate = dispatch.CreatedDate;

                dispatchViewModel.DispatchAllocationID = dispatch.DispatchAllocationID.Value;
                dispatchViewModel.DispatchDate = dispatch.DispatchDate;
                dispatchViewModel.DispatchID = dispatch.DispatchID;
                dispatchViewModel.DispatchedByStoreMan = dispatch.DispatchedByStoreMan;
                dispatchViewModel.DriverName = string.Empty;
                if(dispatch.FDPID.HasValue)
                dispatchViewModel.FDPID = dispatch.FDPID.Value;
                dispatchViewModel.FDP = dispatch.FDP.Name;
                dispatchViewModel.Region = dispatch.FDP.AdminUnit.AdminUnit2.AdminUnit2.Name;
                dispatchViewModel.Zone = dispatch.FDP.AdminUnit.AdminUnit2.Name;
                dispatchViewModel.Woreda = dispatch.FDP.AdminUnit.Name;
                dispatchViewModel.GIN = dispatch.GIN;
                dispatchViewModel.HubID = dispatch.HubID;
                // dispatch.ProgramID = dispatchAllocation.ProgramID;
                dispatchViewModel.Program = dispatchAllocation.Program.Name;

                    dispatchViewModel.Month = dispatch.PeriodMonth;

                    dispatchViewModel.Year = dispatch.PeriodYear;
                dispatchViewModel.PlateNo_Prime = dispatch.PlateNo_Prime;
                dispatchViewModel.PlateNo_Trailer = dispatch.PlateNo_Trailer;
                dispatchViewModel.Remark = dispatch.Remark;
                dispatchViewModel.RequisitionNo = dispatch.RequisitionNo;
                dispatchViewModel.ProgramID = dispatchAllocation.ProgramID.HasValue ? dispatchAllocation.ProgramID.Value : 0;

                    dispatchViewModel.Round = dispatch.Round;

                    dispatchViewModel.TransporterID = dispatch.TransporterID;

                dispatchViewModel.WeighBridgeTicketNumber = dispatch.WeighBridgeTicketNumber;

                 var dispatchDetail = dispatch.DispatchDetails.FirstOrDefault();
                 dispatchViewModel.CommodityID = dispatchDetail.CommodityID;
                 dispatchViewModel.Commodity = dispatchDetail.Commodity.Name;
                //dispatch.DispatchDetailID = Guid.NewGuid();
                 dispatchViewModel.DispatchID = dispatchDetail.DispatchID;
                dispatchViewModel.Quantity = dispatchDetail.RequestedQuantityInMT;
                dispatchViewModel.QuantityInUnit = dispatchDetail.RequestedQunatityInUnit;
                dispatchViewModel.UnitID = dispatchDetail.UnitID;
                dispatchViewModel.ShippingInstructionID = dispatchAllocation.ShippingInstructionID;
                dispatchViewModel.ProjectCodeID = dispatchAllocation.ProjectCodeID;

                dispatchViewModels.Add(dispatchViewModel);

            }
            return dispatchViewModels;
        }
コード例 #4
0
        public ActionResult CreateDispatch(DispatchViewModel dispatchviewmodel)
        {
            ViewBag.UnitID = new SelectList(_unitService.GetAllUnit(), "UnitID", "Name", dispatchviewmodel.UnitID);
            if (ModelState.IsValid)
            {

                var reliefReq =
                    _reliefRequisitionService.FindBy(n => n.RequisitionID == dispatchviewmodel.RequisitionId).
                        FirstOrDefault();

                DispatchViewModel dispatch = _dispatchService.CreateDispatchFromDispatchAllocation(dispatchviewmodel.DispatchAllocationID, 0);
                if (reliefReq != null) dispatch.PlanId = reliefReq.RegionalRequest.PlanID;
                dispatch.UserProfileID = dispatchviewmodel.UserProfileID;
                dispatch.PlateNo_Prime = dispatchviewmodel.PlateNo_Prime;
                dispatch.PlateNo_Trailer = dispatchviewmodel.PlateNo_Trailer;
                dispatch.GIN = dispatchviewmodel.GIN;
                dispatch.DispatchDate = dispatchviewmodel.DispatchDate;
                dispatch.DispatchedByStoreMan = dispatchviewmodel.DispatchedByStoreMan;
                dispatch.WeighBridgeTicketNumber = dispatchviewmodel.WeighBridgeTicketNumber;
                dispatch.DriverName = dispatchviewmodel.DriverName;
                dispatch.Remark = dispatchviewmodel.Remark;
                dispatch.UnitID = dispatchviewmodel.UnitID;
                dispatch.QuantityInUnit = dispatchviewmodel.QuantityInUnit;
                dispatch.QuantityPerUnit = dispatchviewmodel.QuantityPerUnit;
                dispatch.FDP = dispatchviewmodel.FDP;
                dispatch.Transporter = dispatchviewmodel.Transporter;
                dispatch.HubID = dispatchviewmodel.HubID;
                dispatch.RequisitionId = dispatchviewmodel.RequisitionId;

                dispatch.Quantity = UserProfile.PreferedWeightMeasurment.ToLower() == "mt" ? dispatchviewmodel.Quantity : dispatchviewmodel.Quantity / 10;
                _transactionService.SaveDispatchTransaction(dispatch);

                var contacts = _contactService.FindBy(c => c.FDPID == dispatch.FDPID);

                foreach (var contact in contacts)
                {
                    var hub = _hubService.FindById(dispatch.HubID).Name;
                    var message = new SmsOutgoingMessage()
                    {
                        //id = Guid.NewGuid().ToString(),
                        to = contact.PhoneNo,
                        message = "Hello," + contact.FirstName + " There is a new dispatch with GIN " + dispatch.GIN + " from " + hub + " hub. COMMODITY: " + dispatch.Commodity + " QUT: " + dispatch.Quantity + " MT." + "Transporter: '" + dispatch.Transporter + "' Plate No.: "
                        + dispatch.PlateNo_Prime + "-" + dispatch.PlateNo_Trailer + " Date: " + DateTime.Today.ToShortDateString(),
                    };

                    var sms = new SMS()
                        {
                            MobileNumber = contact.PhoneNo,
                            Text = "Hello," + contact.FirstName + " There is a new dispatch with GIN " + dispatch.GIN + " from " + hub + " hub. COMMODITY: " + dispatch.Commodity + " QUT: " + dispatch.Quantity + " MT." + "Transporter: '" + dispatch.Transporter + "' Plate No.: "
                                   + dispatch.PlateNo_Prime + "-" + dispatch.PlateNo_Trailer + " Date: " + DateTime.Today.ToShortDateString(),
                            Status = 1,
                            InOutInd = "O",
                        };

                    _smsService.AddSMS(sms);
                    //var result = _smsGatewayService.SendSMS(message);
                }

                return RedirectToAction("Index", "Dispatch");
            }

            return View(dispatchviewmodel);
        }
コード例 #5
0
        public List<DispatchViewModel> GetAllTransportersWithoutGrn()
        {
            var dispatchAllocationIds =
                _unitOfWork.DispatchAllocationRepository.GetAll().Select(t => t.DispatchAllocationID).ToList();
            var dispatches =
                _unitOfWork.DispatchRepository.Get(t => dispatchAllocationIds.Contains(t.DispatchAllocationID.Value),
                                                   null, "DispatchDetails")
                    .ToList();

            List<DispatchViewModel> dispatchViewModels = new List<DispatchViewModel>();
            foreach (var dispatch in dispatches)
            {
                var dispatchViewModel = new DispatchViewModel();
                dispatchViewModel.DispatchID = dispatch.DispatchID;
                dispatchViewModel.DispatchDate = dispatch.DispatchDate;
                dispatchViewModel.Transporter = dispatch.Transporter.Name;
                dispatchViewModel.BidNumber = dispatch.BidNumber;
                dispatchViewModel.FDP = dispatch.FDP.Name;
                dispatchViewModels.Add(dispatchViewModel);
            }
            return dispatchViewModels;
        }
コード例 #6
0
ファイル: TransactionService.cs プロジェクト: FishAbe/cats
        public void SaveDispatchTransaction(DispatchViewModel dispatchViewModel, Boolean reverse=false)
        {
            int transactionsign = reverse ? -1 : 1;
            Dispatch dispatch;
            if (dispatchViewModel.DispatchID != null)
                dispatch = _unitOfWork.DispatchRepository.FindById(dispatchViewModel.DispatchID.GetValueOrDefault());
            else
            {
                dispatch = new Dispatch();
                dispatch.DispatchID = Guid.NewGuid();
            }

            dispatch.BidNumber = dispatchViewModel.BidNumber;
                dispatch.CreatedDate = dispatchViewModel.CreatedDate;
                dispatch.DispatchAllocationID = dispatchViewModel.DispatchAllocationID;
                dispatch.DispatchDate = dispatchViewModel.DispatchDate;

                dispatch.DispatchedByStoreMan = dispatchViewModel.DispatchedByStoreMan;
                dispatch.DriverName = dispatchViewModel.DriverName;
                dispatch.FDPID = dispatchViewModel.FDPID;
                dispatch.GIN = dispatchViewModel.GIN;
                dispatch.HubID = dispatchViewModel.HubID;
                dispatch.PeriodMonth = dispatchViewModel.Month;
                dispatch.PeriodYear = dispatchViewModel.Year;
                dispatch.PlateNo_Prime = dispatchViewModel.PlateNo_Prime;
                dispatch.PlateNo_Trailer = dispatchViewModel.PlateNo_Trailer;
                dispatch.Remark = dispatchViewModel.Remark;
                dispatch.RequisitionNo = dispatchViewModel.RequisitionNo;
                dispatch.Round = dispatchViewModel.Round;
                dispatch.TransporterID = dispatchViewModel.TransporterID;
                dispatch.UserProfileID = dispatchViewModel.UserProfileID;
            dispatch.WeighBridgeTicketNumber = dispatchViewModel.WeighBridgeTicketNumber;

            //dispatch.Type = dispatchViewModel.Type;

            var group = new TransactionGroup();
            group.TransactionGroupID = Guid.NewGuid();

            var dispatchDetail = new DispatchDetail
            {
                DispatchID = dispatch.DispatchID,
                CommodityID = dispatchViewModel.CommodityID,
                CommodityChildID=dispatchViewModel.CommodityChildID,
                Description = dispatchViewModel.Commodity,
                DispatchDetailID = Guid.NewGuid(),
                RequestedQuantityInMT = dispatchViewModel.Quantity,
                RequestedQunatityInUnit = dispatchViewModel.QuantityInUnit,
                QuantityPerUnit = dispatchViewModel.QuantityPerUnit,

                UnitID = dispatchViewModel.UnitID,
                TransactionGroupID = @group.TransactionGroupID
            };

            //var parentCommodityId =
            //    _unitOfWork.CommodityRepository.FindById(dispatchViewModel.CommodityChildID).ParentID ??
            //    dispatchViewModel.CommodityID;
            // Physical movement of stock
            var transactionInTransit = new Transaction
            {
                TransactionID = Guid.NewGuid(),
                AccountID = _accountService.GetAccountIdWithCreate(Account.Constants.FDP, dispatchViewModel.FDPID),
                ProgramID = dispatchViewModel.ProgramID,
                ParentCommodityID = null,
                CommodityID = dispatchViewModel.CommodityID,
                CommodityChildID = dispatchViewModel.CommodityChildID,
                FDPID = dispatchViewModel.FDPID,
                HubID = dispatchViewModel.HubID,
                HubOwnerID = _unitOfWork.HubRepository.FindById(dispatchViewModel.HubID).HubOwnerID,
                LedgerID = Models.Ledger.Constants.GOODS_IN_TRANSIT,
                QuantityInMT = transactionsign * (+ dispatchViewModel.Quantity),
                QuantityInUnit = transactionsign * (+dispatchViewModel.QuantityInUnit),
                ShippingInstructionID = dispatchViewModel.ShippingInstructionID,
                ProjectCodeID = dispatchViewModel.ProjectCodeID,
                Round = dispatchViewModel.Round,
                PlanId = dispatchViewModel.PlanId,
                TransactionDate = DateTime.Now,
                UnitID = dispatchViewModel.UnitID,
                TransactionGroupID = @group.TransactionGroupID
            };
            //transaction2.Stack = dispatchModel.StackNumber;
            //transaction2.StoreID = dispatchModel.StoreID;
            //group.Transactions.Add(transaction2);

            var transactionGoh = new Transaction
            {
                TransactionID = Guid.NewGuid(),
                AccountID = _accountService.GetAccountIdWithCreate(Account.Constants.FDP, dispatchViewModel.FDPID),
                ProgramID = dispatchViewModel.ProgramID,
                ParentCommodityID = null,
                CommodityID = dispatchViewModel.CommodityID,
                CommodityChildID = dispatchViewModel.CommodityChildID,
                FDPID = dispatchViewModel.FDPID,
                HubID = dispatchViewModel.HubID,
                HubOwnerID = _unitOfWork.HubRepository.FindById(dispatchViewModel.HubID).HubOwnerID,
                LedgerID = Models.Ledger.Constants.GOODS_ON_HAND,
                QuantityInMT = transactionsign * (-dispatchViewModel.Quantity),
                QuantityInUnit = transactionsign * (-dispatchViewModel.QuantityInUnit),
                ShippingInstructionID = dispatchViewModel.ShippingInstructionID,
                ProjectCodeID = dispatchViewModel.ProjectCodeID,
                Round = dispatchViewModel.Round,
                PlanId = dispatchViewModel.PlanId,
                TransactionDate = DateTime.Now,
                UnitID = dispatchViewModel.UnitID,
                TransactionGroupID = @group.TransactionGroupID
            };
            //transaction.Stack = dispatch.StackNumber;
            //transaction.StoreID = dispatch.StoreID;

            // plan side of the transaction (Red Border)

            var transactionComitedToFdp = new Transaction
            {
                TransactionID = Guid.NewGuid(),
                AccountID = _accountService.GetAccountIdWithCreate(Account.Constants.FDP, dispatchViewModel.FDPID),
                ProgramID = dispatchViewModel.ProgramID,
                ParentCommodityID = null,
                CommodityID = dispatchViewModel.CommodityID,
                CommodityChildID = dispatchViewModel.CommodityChildID,
                FDPID = dispatchViewModel.FDPID,
                HubID = dispatchViewModel.HubID,
                HubOwnerID = _unitOfWork.HubRepository.FindById(dispatchViewModel.HubID).HubOwnerID,
                LedgerID = Models.Ledger.Constants.COMMITED_TO_FDP,
                QuantityInMT = transactionsign * (+dispatchViewModel.Quantity),
                QuantityInUnit = transactionsign * (+dispatchViewModel.QuantityInUnit),
                ShippingInstructionID = dispatchViewModel.ShippingInstructionID,
                ProjectCodeID = dispatchViewModel.ProjectCodeID,
                Round = dispatchViewModel.Round,
                PlanId = dispatchViewModel.PlanId,
                TransactionDate = DateTime.Now,
                UnitID = dispatchViewModel.UnitID,
                TransactionGroupID = @group.TransactionGroupID
            };
            //transaction2.Stack = dispatchModel.StackNumber;
            //transaction2.StoreID = dispatchModel.StoreID;
            //group.Transactions.Add(transaction2);

            var transactionInTansitFreeStock = new Transaction
            {
                TransactionID = Guid.NewGuid(),
                AccountID = _accountService.GetAccountIdWithCreate(Account.Constants.FDP, dispatchViewModel.FDPID),
                ProgramID = dispatchViewModel.ProgramID,
                ParentCommodityID = null,
                CommodityID = dispatchViewModel.CommodityID,
                CommodityChildID = dispatchViewModel.CommodityChildID,
                FDPID = dispatchViewModel.FDPID,
                HubID = dispatchViewModel.HubID,
                HubOwnerID = _unitOfWork.HubRepository.FindById(dispatchViewModel.HubID).HubOwnerID,
                LedgerID = Cats.Models.Ledger.Constants.STATISTICS_FREE_STOCK,
                QuantityInMT = transactionsign * (-dispatchViewModel.Quantity),
                QuantityInUnit = transactionsign * (-dispatchViewModel.QuantityInUnit),
                ShippingInstructionID = dispatchViewModel.ShippingInstructionID,
                ProjectCodeID = dispatchViewModel.ProjectCodeID,
                Round = dispatchViewModel.Round,
                PlanId = dispatchViewModel.PlanId,
                TransactionDate = DateTime.Now,
                UnitID = dispatchViewModel.UnitID,
                TransactionGroupID = @group.TransactionGroupID
            };
            //transaction.Stack = dispatch.StackNumber;
            //transaction.StoreID = dispatch.StoreID;
            dispatch.DispatchDetails.Clear();
            dispatch.DispatchDetails.Add(dispatchDetail);

            try
            {
                _unitOfWork.TransactionGroupRepository.Add(group);
                _unitOfWork.TransactionRepository.Add(transactionInTransit);
                _unitOfWork.TransactionRepository.Add(transactionGoh);
                _unitOfWork.TransactionRepository.Add(transactionInTansitFreeStock);
                _unitOfWork.TransactionRepository.Add(transactionComitedToFdp);
                if (!reverse)
                {
                    if (dispatchViewModel.DispatchID == null)
                    {
                        _unitOfWork.DispatchRepository.Add(dispatch);
                    }

                    else
                    {
                        _unitOfWork.DispatchRepository.Edit(dispatch);
                    }
                }

            _unitOfWork.Save();

            }

            catch (Exception exp)
            {
                // dbTransaction.Rollback();
                //TODO: Save the detail of this exception somewhere
                throw new Exception("The Dispatch Transaction Cannot be saved. <br />Detail Message :" + exp.Message);
            }
        }
コード例 #7
0
        public void SaveDispatchTransaction(DispatchViewModel dispatchViewModel)
        {
            var dispatch = new Dispatch();
            dispatch.BidNumber = dispatchViewModel.BidNumber;
            dispatch.CreatedDate = dispatchViewModel.CreatedDate;
            dispatch.DispatchAllocationID = dispatchViewModel.DispatchAllocationID;
            dispatch.DispatchDate = dispatchViewModel.DispatchDate;
            dispatch.DispatchID = Guid.NewGuid();
            dispatch.DispatchedByStoreMan = dispatchViewModel.DispatchedByStoreMan;
            dispatch.DriverName = dispatchViewModel.DriverName;
            dispatch.FDPID = dispatchViewModel.FDPID;
            dispatch.GIN = dispatchViewModel.GIN;
            dispatch.HubID = dispatchViewModel.HubID;
            dispatch.PeriodMonth = dispatchViewModel.Month;
            dispatch.PeriodYear = dispatchViewModel.Year;
            dispatch.PlateNo_Prime = dispatchViewModel.PlateNo_Prime;
            dispatch.PlateNo_Trailer = dispatchViewModel.PlateNo_Trailer;
            dispatch.Remark = dispatchViewModel.Remark;
            dispatch.RequisitionNo = dispatchViewModel.RequisitionNo;
            dispatch.Round = dispatchViewModel.Round;

            dispatch.TransporterID = dispatchViewModel.TransporterID;
            //dispatch.Type = dispatchViewModel.Type;
            dispatch.UserProfileID = dispatchViewModel.UserProfileID;
            dispatch.WeighBridgeTicketNumber = dispatchViewModel.WeighBridgeTicketNumber;

            TransactionGroup group = new TransactionGroup();
            group.TransactionGroupID = Guid.NewGuid();

            DispatchDetail dispatchDetail = new DispatchDetail();
            dispatchDetail.DispatchID = dispatch.DispatchID;
            dispatchDetail.CommodityID = dispatchViewModel.CommodityID;
            dispatchDetail.Description = dispatchViewModel.Commodity;
            dispatchDetail.DispatchDetailID = Guid.NewGuid();
            dispatchDetail.RequestedQuantityInMT = dispatchViewModel.Quantity;
            dispatchDetail.RequestedQunatityInUnit = dispatchViewModel.QuantityInUnit;
            dispatchDetail.QuantityPerUnit = dispatchViewModel.QuantityPerUnit;
            dispatchDetail.UnitID = dispatchViewModel.UnitID;
            dispatchDetail.TransactionGroupID = group.TransactionGroupID;

                //if (dispatchViewModel.Type == 1)
                //{
                    Transaction transaction2 = new Transaction();
                    transaction2.TransactionID = Guid.NewGuid();
                    transaction2.AccountID = _accountService.GetAccountIdWithCreate(Account.Constants.FDP, dispatchViewModel.FDPID);
                    transaction2.ProgramID = dispatchViewModel.ProgramID;
                    transaction2.ParentCommodityID = dispatchViewModel.CommodityID;
                    transaction2.CommodityID = dispatchViewModel.CommodityID;
                    transaction2.HubID = dispatchViewModel.HubID;
                    transaction2.HubOwnerID = _unitOfWork.HubRepository.FindById(dispatchViewModel.HubID).HubOwnerID;
                    transaction2.LedgerID = Ledger.Constants.GOODS_IN_TRANSIT;
                    transaction2.QuantityInMT = +dispatchViewModel.Quantity;
                    transaction2.QuantityInUnit = +dispatchViewModel.QuantityInUnit;
                    transaction2.ShippingInstructionID = dispatchViewModel.ShippingInstructionID;
                    transaction2.ProjectCodeID = dispatchViewModel.ProjectCodeID;
                    transaction2.Round = dispatchViewModel.Round;
                    transaction2.PlanId = dispatchViewModel.PlanId;
                    //transaction2.Stack = dispatchModel.StackNumber;
                    //transaction2.StoreID = dispatchModel.StoreID;
                    transaction2.TransactionDate = DateTime.Now;
                    transaction2.UnitID = dispatchViewModel.UnitID;
                    transaction2.TransactionGroupID = group.TransactionGroupID;
                    //group.Transactions.Add(transaction2);

                    Transaction transaction = new Transaction();
                    transaction.TransactionID = Guid.NewGuid();
                    transaction.AccountID = _accountService.GetAccountIdWithCreate(Account.Constants.FDP, dispatchViewModel.FDPID);
                    transaction.ProgramID = dispatchViewModel.ProgramID;
                    transaction.ParentCommodityID = dispatchViewModel.CommodityID;
                    transaction.CommodityID = dispatchViewModel.CommodityID;
                    transaction.HubID = dispatchViewModel.HubID;
                    transaction.HubOwnerID = _unitOfWork.HubRepository.FindById(dispatchViewModel.HubID).HubOwnerID;
                    transaction.LedgerID = Ledger.Constants.GOODS_ON_HAND_UNCOMMITED;
                    transaction.QuantityInMT = -dispatchViewModel.Quantity;
                    transaction.QuantityInUnit = -dispatchViewModel.QuantityInUnit;
                    transaction.ShippingInstructionID = dispatchViewModel.ShippingInstructionID;
                    transaction.ProjectCodeID = dispatchViewModel.ProjectCodeID;
                    transaction.Round = dispatchViewModel.Round;
                    transaction.PlanId = dispatchViewModel.PlanId;
                    //transaction.Stack = dispatch.StackNumber;
                    //transaction.StoreID = dispatch.StoreID;
                    transaction.TransactionDate = DateTime.Now;
                    transaction.UnitID = dispatchViewModel.UnitID;
                    transaction.TransactionGroupID = group.TransactionGroupID;

                    // group.Transactions.Add(transaction);
               // }
                //else
                //{
                //    Transaction transaction2 = GetPositiveHUBTransaction(dispatchModel, dispatch, detail);
                //    group.Transactions.Add(transaction2);

                //    Transaction transaction = GetNegativeHUBTransaction(dispatchModel, dispatch, detail);
                //    group.Transactions.Add(transaction);
                //}

                dispatch.DispatchDetails.Add(dispatchDetail);

               // }
            // Try to save this transaction
            //    db.Database.Connection.Open();
            //  DbTransaction dbTransaction = db.Database.Connection.BeginTransaction();
            try
            {
                _unitOfWork.TransactionGroupRepository.Add(group);
                _unitOfWork.TransactionRepository.Add(transaction2);
                _unitOfWork.TransactionRepository.Add(transaction);
                _unitOfWork.DispatchRepository.Add(dispatch);
                _unitOfWork.Save();
                //repository.Dispatch.Add(dispatch);
                //dbTransaction.Commit();
            }

            catch (Exception exp)
            {
                // dbTransaction.Rollback();
                //TODO: Save the detail of this exception somewhere
                throw new Exception("The Dispatch Transaction Cannot be saved. <br />Detail Message :" + exp.Message);
            }

            //if (dispatchViewModel.Type == 1)
            //{
            //    string sms = dispatchViewModel.GetSMSText();
            //    SMS.SendSMS(dispatchViewModel.FDPID.Value, sms);
            //}
        }
コード例 #8
0
ファイル: DispatchController.cs プロジェクト: FishAbe/cats
        public ActionResult CreateDispatch(DispatchViewModel dispatchviewmodel)
        {
            ViewBag.UnitID = new SelectList(_unitService.GetAllUnit(), "UnitID", "Name", dispatchviewmodel.UnitID);
            if (ModelState.IsValid)
            {

                var reliefReq =
                    _reliefRequisitionService.FindBy(n => n.RequisitionID == dispatchviewmodel.RequisitionId).
                        FirstOrDefault();

                DispatchViewModel dispatch = _dispatchService.CreateDispatchFromDispatchAllocation(dispatchviewmodel.DispatchAllocationID, 0);
                if (reliefReq != null) dispatch.PlanId = reliefReq.RegionalRequest.PlanID;
                dispatch.UserProfileID = dispatchviewmodel.UserProfileID;
                dispatch.PlateNo_Prime = dispatchviewmodel.PlateNo_Prime;
                dispatch.PlateNo_Trailer = dispatchviewmodel.PlateNo_Trailer;
                dispatch.GIN = dispatchviewmodel.GIN;
                dispatch.DispatchDate = dispatchviewmodel.DispatchDate;
                dispatch.DispatchedByStoreMan = dispatchviewmodel.DispatchedByStoreMan;
                dispatch.WeighBridgeTicketNumber = dispatchviewmodel.WeighBridgeTicketNumber;
                dispatch.DriverName = dispatchviewmodel.DriverName;
                dispatch.Remark = dispatchviewmodel.Remark;
                dispatch.UnitID = dispatchviewmodel.UnitID;
                dispatch.QuantityInUnit = dispatchviewmodel.QuantityInUnit;
                dispatch.QuantityPerUnit = dispatchviewmodel.QuantityPerUnit;
                dispatch.Quantity = dispatchviewmodel.QuantityPerUnit.GetValueOrDefault()/10;
                dispatch.FDP = dispatchviewmodel.FDP;
                dispatch.Transporter = dispatchviewmodel.Transporter;
                dispatch.HubID = dispatchviewmodel.HubID;
                dispatch.RequisitionId = dispatchviewmodel.RequisitionId;
                dispatch.DispatchID = dispatchviewmodel.DispatchID;
                dispatch.CommodityID = dispatchviewmodel.CommodityID;
                dispatch.CommodityChildID = dispatchviewmodel.CommodityChildID;
                //dispatch.Quantity = UserProfile.PreferedWeightMeasurment.ToLower() == "mt" ? dispatchviewmodel.Quantity : dispatchviewmodel.Quantity / 10;

                //if its being edited reverse previous transaction before saving the new one;

                var prevdispatch = _dispatchService.FindById(dispatchviewmodel.DispatchID.GetValueOrDefault());
                if (prevdispatch != null)
                {
                    var prevdispatchdetail = prevdispatch.DispatchDetails.FirstOrDefault();

                    _transactionService.SaveDispatchTransaction(
                        new DispatchViewModel
                            {
                                CommodityID = prevdispatchdetail.CommodityID,
                                Quantity = prevdispatchdetail.DispatchedQuantityInMT,
                                QuantityInUnit = prevdispatchdetail.DispatchedQuantityInUnit,
                                ShippingInstructionID = dispatchviewmodel.ShippingInstructionID,
                                ProjectCodeID = dispatchviewmodel.ProjectCodeID,
                                PlanId = dispatchviewmodel.PlanId,
                                UnitID = dispatchviewmodel.UnitID,
                                BidNumber = prevdispatch.BidNumber,
                                CreatedDate = prevdispatch.CreatedDate,
                                DispatchAllocationID = prevdispatch.DispatchAllocationID.GetValueOrDefault(),
                                DispatchDate = prevdispatch.DispatchDate,
                                DispatchID = prevdispatch.DispatchID,
                                DispatchedByStoreMan = prevdispatch.DispatchedByStoreMan,
                                DriverName = prevdispatch.DriverName,
                                FDPID = prevdispatch.FDPID.GetValueOrDefault(),
                                ProgramID = dispatchviewmodel.ProgramID,
                                GIN = prevdispatch.GIN,
                                HubID = prevdispatch.HubID,
                                Month = prevdispatch.PeriodMonth,
                                Year = prevdispatch.PeriodYear,
                                PlateNo_Prime = prevdispatch.PlateNo_Prime,
                                PlateNo_Trailer = prevdispatch.PlateNo_Trailer,
                                Remark = prevdispatch.Remark,
                                RequisitionNo = prevdispatch.RequisitionNo,
                                Round = prevdispatch.Round,
                                TransporterID = prevdispatch.TransporterID,
                                UserProfileID = prevdispatch.UserProfileID,
                                WeighBridgeTicketNumber = prevdispatch.WeighBridgeTicketNumber
                            }, true);
                }

                _transactionService.SaveDispatchTransaction(dispatch);

                var contacts = _contactService.FindBy(c => c.FDPID == dispatch.FDPID);

                if (_dispatchService.FindByAllocationId(dispatchviewmodel.DispatchAllocationID)==null)
                {

                    DispatchAllocation totalAllocated = _dispatchAllocationService.FindById(dispatchviewmodel.DispatchAllocationID);

                    foreach (var contact in contacts)
                    {
                        var hub = _hubService.FindById(dispatch.HubID).Name;
                        var sms = new SMS()
                        {
                            MobileNumber = contact.PhoneNo,
                            Text =
                                "Hello," + contact.FirstName + " There is a new dispatch from " + hub + " hub. COMMODITY: " + dispatch.Commodity +
                                " QUT: " + totalAllocated.Amount  + " MT." + "Strarting from:" +
                                DateTime.Today.ToShortDateString(),
                            Status = 1,
                            InOutInd = "O",
                        };

                        _smsService.AddSMS(sms);
                        //var result = _smsGatewayService.SendSMS(message);
                    }

                 /*
                    foreach (var contact in contacts)
                    {
                        var hub = _hubService.FindById(dispatch.HubID).Name;
                        var message = new SmsOutgoingMessage()
                                          {
                                              //id = Guid.NewGuid().ToString(),
                                              to = contact.PhoneNo,
                                              message =
                                                  "Hello," + contact.FirstName + " There is a new dispatch with GIN " +
                                                  dispatch.GIN + " from " + hub + " hub. COMMODITY: " +
                                                  dispatch.Commodity + " QUT: " + dispatch.Quantity + " MT." +
                                                  "Transporter: '" + dispatch.Transporter + "' Plate No.: "
                                                  + dispatch.PlateNo_Prime + "-" + dispatch.PlateNo_Trailer + " Date: " +
                                                  DateTime.Today.ToShortDateString(),
                                          };

                        var sms = new SMS()
                                      {
                                          MobileNumber = contact.PhoneNo,
                                          Text =
                                              "Hello," + contact.FirstName + " There is a new dispatch with GIN " +
                                              dispatch.GIN + " from " + hub + " hub. COMMODITY: " + dispatch.Commodity +
                                              " QUT: " + dispatch.Quantity + " MT." + "Transporter: '" +
                                              dispatch.Transporter + "' Plate No.: "
                                              + dispatch.PlateNo_Prime + "-" + dispatch.PlateNo_Trailer + " Date: " +
                                              DateTime.Today.ToShortDateString(),
                                          Status = 1,
                                          InOutInd = "O",
                                      };

                        _smsService.AddSMS(sms);
                        //var result = _smsGatewayService.SendSMS(message);
                    }
                  * */
                }
                return RedirectToAction("Index", "Dispatch");
            }

            return View(dispatchviewmodel);
        }