Exemplo n.º 1
0
        public void Payment(String type = null)
        {
            List <string> temp = new List <string> {
                "credit", "transfer", "internaltransfer"
            };
            int index = (type == null)? GenericUtils.GetRandomNumber(0, temp.Count() - 1) :temp.FindIndex(s => s.ToLower().Contains(type));

            switch (temp[index])
            {
            case "credit":
                EnterCreditCard();
                break;

            case "transfer":
                True.ClickCustom("Transfer", driver);
                FiRoutingNumber.SendKeysWrapper(Configuration.Parameter.Get <string>("RoutingNumber"), "RoutingNumber", driver);
                acctNumber.SendKeysWrapper(Configuration.Parameter.Get <string>("AccountNumber"), "AccountNumber", driver);
                break;

            case "internaltransfer":
                InternalTransfer.ClickCustom("InternalTransfer", driver);
                acctNumber.SendKeysWrapper(Configuration.Parameter.Get <string>("AccountNumber"), "AccountNumber", driver);
                break;
            }
            submitApplicationButton.ClickCustom("Submit", driver);
        }
Exemplo n.º 2
0
 private void ConfirmStockMovement(object sender, EventArgs e)
 {
     for (int i = 0; i < gridConfirmationView.RowCount; i++)
     {
         DataRow dr = gridConfirmationView.GetDataRow(i);
         if (Convert.ToBoolean(dr["IsSelected"]))
         {
             InternalTransfer it = new InternalTransfer();
             it.LoadByPrimaryKey(Convert.ToInt32(dr["ID"]));
             it.Status = 1;
             it.Save();
         }
     }
     BindConfirmationGrid();
 }
Exemplo n.º 3
0
 private void btnConfirm2_Click(object sender, EventArgs e)
 {
     for (int i = 0; i < gridView1.RowCount; i++)
     {
         DataRow dr = gridView1.GetDataRow(i);
         if (Convert.ToBoolean(dr["IsSelected"]))
         {
             InternalTransfer it = new InternalTransfer();
             it.LoadByPrimaryKey(Convert.ToInt32(dr["ID"]));
             it.Status = 1;
             it.Save();
         }
     }
     XtraMessageBox.Show("Confirmation Successful", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
     gridControl1.DataSource = BLL.InternalTransfer.GetAllTransfers(radioGroup1.EditValue.ToString());
 }
Exemplo n.º 4
0
        private void returnToBulkStoreToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DataRow dr = gridPickFaceDetailView.GetFocusedDataRow();

            if (dr != null)
            {
                int           ReceivePalletID = Convert.ToInt32(dr["ID"]);
                ReceivePallet rp = new ReceivePallet();
                rp.LoadByPrimaryKey(ReceivePalletID);

                ReceiveDoc rd = new ReceiveDoc();
                rd.LoadByPrimaryKey(rp.ReceiveID);

                BLL.ItemManufacturer imf = new BLL.ItemManufacturer();
                imf.LoadIMbyLevel(rd.ItemID, rd.ManufacturerId, rp.BoxSize);

                int QuantityToReturn  = Convert.ToInt32(((rp.Balance - rp.ReservedStock) / imf.QuantityInBasicUnit) * imf.QuantityInBasicUnit);
                InternalTransfer itfr = new InternalTransfer();
            }
        }
Exemplo n.º 5
0
        public async Task<CreateInternalTransferResponse> Handle(CreateInternalTransferRequest request, CancellationToken cancellationToken)
        {
            var result = new CreateInternalTransferResponse();

            var fromPocket = _context.Pockets
                .Where(x => x.PocketID == request.FromPocketID)
                .Include(a => a.Wallet)
                    .ThenInclude(b => b.Owner)
                    .ThenInclude(c => c.Provider)
                .SingleOrDefault();

            if (fromPocket == null)
                throw new NotFoundException(nameof(Pocket), request.FromPocketID);

            var toPocket = _context.Pockets
                .Where(x => x.PocketID == request.ToPocketID)
                .Include(a => a.Wallet)
                    .ThenInclude(b => b.Owner)
                    .ThenInclude(c => c.Provider)
                .SingleOrDefault();

            if (toPocket == null)
                throw new NotFoundException(nameof(Pocket), request.ToPocketID);

            var currency = _context.Currencies
                .Where(x => x.CurrencyID == fromPocket.CurrencyID)
                .SingleOrDefault();

            if (currency == null)
                throw new NotFoundException(nameof(Currency), fromPocket.CurrencyID);

            Transaction transactionFromPocket = new Transaction
            {
                PocketID = fromPocket.PocketID,
                Amount = -request.Amount,
                UnitPriceInUSD = currency.UnitPriceInUSD,
                TransactionHash = string.Empty,
                PairWalletName = $"{toPocket.Wallet.Owner.Provider.Name} - {toPocket.Wallet.Name}",
                PairWalletAddress = toPocket.Wallet.Address,
                TransactionType = TransactionType.InternalTransferOUT,
                TransactionDateTime = request.TransactionDateTime,
                Created = _dateTimeOffset.Now,
                LastModified = _dateTimeOffset.Now
            };

            Transaction transactionToPocket = new Transaction
            {
                PocketID = toPocket.PocketID,
                Amount = request.Amount,
                UnitPriceInUSD = currency.UnitPriceInUSD,
                TransactionHash = string.Empty,
                PairWalletName = $"{fromPocket.Wallet.Owner.Provider.Name} - {fromPocket.Wallet.Name}",
                PairWalletAddress = fromPocket.Wallet.Address,
                TransactionType = TransactionType.InternalTransferIN,
                TransactionDateTime = request.TransactionDateTime,
                Created = _dateTimeOffset.Now,
                LastModified = _dateTimeOffset.Now
            };

            _context.Transactions.Add(transactionFromPocket);
            _context.Transactions.Add(transactionToPocket);

            await _context.SaveChangesAsync(cancellationToken);

            InternalTransfer internalTransfer = new InternalTransfer
            {
                FromTransactionID = transactionFromPocket.TransactionID,
                ToTransactionID = transactionToPocket.TransactionID,
            };

            _context.InternalTransfers.Add(internalTransfer);

            await _context.SaveChangesAsync(cancellationToken);

            result.InternalTransferID = internalTransfer.InternalTransferID;
            result.WalletID = fromPocket.WalletID;

            result.IsSuccessful = true;

            return result;
        }
Exemplo n.º 6
0
        private void OnReplenishClicked(object sender, EventArgs e)
        {
            PalletLocation pl  = new PalletLocation();
            PickFace       pf  = new PickFace();
            DataRow        dr  = gridPickFaceStockLevelView.GetFocusedDataRow();
            DataRow        dr2 = gridReplenishmentChoiceView.GetFocusedDataRow();

            if (dr2 != null)
            {
                // check if the replenishment is from allowed location.
                //
                if (!Convert.ToBoolean(dr2["CanReplenish"]))
                {
                    XtraMessageBox.Show("Please choose replenishment from the first to expire items", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }


                pl.LoadByPrimaryKey(_palletLocationID);
                pf.LoadByPrimaryKey(_pickFaceID);
                if (pf.IsColumnNull("Balance"))
                {
                    pf.Balance = 0;
                }

                if (pl.IsColumnNull("PalletID"))
                {
                    Pallet pallet = new Pallet();
                    pallet.AddNew();
                    pallet.StorageTypeID = Convert.ToInt32(StorageType.PickFace);
                    pallet.Save();
                    pl.PalletID = pallet.ID;
                    pl.Save();
                }

                ReceivePallet rp  = new ReceivePallet();
                ReceivePallet rp2 = new ReceivePallet();
                ReceiveDoc    rd  = new ReceiveDoc();
                rp.LoadByPrimaryKey(Convert.ToInt32(dr2["ReceivePalletID"]));
                rp2.AddNew();
                rp2.IsOriginalReceive = false;
                rp2.PalletID          = pl.PalletID;
                rp2.ReceiveID         = rp.ReceiveID;
                rp2.BoxSize           = rp.BoxSize;

                // calculate the new balance
                BLL.ItemManufacturer im = new BLL.ItemManufacturer();
                im.LoadIMbyLevel(_designatedItemID, Convert.ToInt32(dr2["ManufacturerID"]), Convert.ToInt32(dr2["BoxSize"]));
                if (rp.IsColumnNull("ReservedStock"))
                {
                    rp.ReservedStock = 0;
                }
                //if (rp.Balance - rp.ReservedStock < im.QuantityInBasicUnit )
                //{
                //    XtraMessageBox.Show("You cannot replenish the pick face from this location because the items are reserved for Issue. Please replenish from another receive.","Warning",MessageBoxButtons.OK,MessageBoxIcon.Warning);
                //    return;
                //}
                BLL.ItemManufacturer imff = new BLL.ItemManufacturer();
                imff.LoadOuterBoxForItemManufacturer(im.ItemID, im.ManufacturerID);
                if (imff.PackageLevel > im.PackageLevel && rp.Balance < imff.QuantityInBasicUnit)
                {
                    rp2.Balance = rp.Balance;
                }
                else if (rp.Balance - rp.ReservedStock > im.QuantityInBasicUnit)
                {
                    rp2.ReceivedQuantity = rp2.Balance = im.QuantityInBasicUnit;
                }
                else
                {
                    rp2.Balance = rp.Balance;
                }
                rp2.ReservedStock = 0;
                rp.Balance       -= rp2.Balance;
                if (rp.IsColumnNull("ReceivedQuantity"))
                {
                    rp.ReceivedQuantity = rp.Balance + rp2.Balance;
                }
                rp.ReceivedQuantity -= rp2.Balance;
                rp.Save();
                rp2.Save();
                pl.Confirmed = false;
                pl.Save();
                pf.Balance += Convert.ToInt32(rp2.Balance);
                pf.Save();
                PalletLocation pl2 = new PalletLocation();
                pl2.LoadLocationForPallet(rp.PalletID);
                rd.LoadByPrimaryKey(rp2.ReceiveID);
                // Now update the screen accordingly.
                dr["Balance"] = pf.Balance;// Convert.ToInt32(dr["Balance"]) + rp2.Balance;

                InternalTransfer it = new InternalTransfer();

                it.AddNew();
                it.ItemID               = _designatedItemID;
                it.BoxLevel             = im.PackageLevel;
                it.ExpireDate           = rd.ExpDate;
                it.BatchNumber          = rd.BatchNo;
                it.ManufacturerID       = im.ManufacturerID;
                it.FromPalletLocationID = pl2.ID;
                it.ToPalletLocationID   = _palletLocationID;
                it.IssuedDate           = DateTimeHelper.ServerDateTime;
                it.QtyPerPack           = im.QuantityInBasicUnit;
                it.Packs        = 1;
                it.ReceiveDocID = rp.ReceiveID;
                it.QuantityInBU = it.Packs * it.QtyPerPack;
                it.Type         = "PickFace";
                it.Status       = 0;
                it.Save();

                BindPickFaceDetailAndReplenismehmnent();
                XtraMessageBox.Show("Your Pick Face is updated, please print the replenishment list and confirm the stock movement", "Confirmation", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
        private void btnCommit_Click(object sender, EventArgs e)
        {
            if (ValidateQuarantine())
            {
                MyGeneration.dOOdads.TransactionMgr transaction = MyGeneration.dOOdads.TransactionMgr.ThreadTransactionMgr();
                transaction.BeginTransaction();
                if (DialogResult.Yes == XtraMessageBox.Show("Are you sure you want to commit the Loss and Adjustment on this screen?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
                {
                    // do the actual commit here.
                    int            printNubmer = InternalTransfer.GetNewPrintNumber() + 1;
                    PalletLocation pl          = new PalletLocation();
                    Pallet         p           = new Pallet();
                    ReceiveDoc     rdoc        = new ReceiveDoc();
                    ReceivePallet  rp          = new ReceivePallet();
                    for (int i = 0; i < gridView1.RowCount; i++)
                    {
                        DataRow dr       = gridView1.GetDataRow(i);
                        Double  writeoff = 0;
                        Double  reLocate = 0;
                        try
                        {
                            if (dr["WriteOff"] != DBNull.Value)
                            {
                                writeoff = Double.Parse(dr["WriteOff"].ToString());
                            }
                            if (dr["ReLocate"] != DBNull.Value)
                            {
                                reLocate = Double.Parse(dr["ReLocate"].ToString());
                            }
                        }
                        catch (Exception exc)
                        {
                        }

                        if (dr["WriteOff"] != DBNull.Value & writeoff > 0)
                        {
                            if (Double.Parse(dr["WriteOff"].ToString()) > Double.Parse(dr["Balance"].ToString()))
                            {
                                XtraMessageBox.Show("Couldn't commit to the numbers you specified. Please specify number less than the balance.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                return;
                            }
                            int writeoffAmout = Convert.ToInt32(dr["WriteOff"]);
                            int qtyPerPack    = Convert.ToInt32(dr["QtyPerPack"]);
                            writeoffAmout *= qtyPerPack;
                            rp.LoadByPrimaryKey(Convert.ToInt32(dr["ReceivePalletID"]));
                            rdoc.LoadByPrimaryKey(rp.ReceiveID);
                            string x = dr["NewPalletLocation"].ToString();
                            rp.Balance -= writeoffAmout;
                            try
                            {
                                //  rp.ReceivedQuantity -= writeoffAmout;
                            }
                            catch { }
                            rdoc.QuantityLeft -= writeoffAmout;

                            ReceivePallet nrp = new ReceivePallet();
                            nrp.AddNew();
                            nrp.ReceiveID = rp.ReceiveID;
                            nrp.PalletID  = pl.GetpalletidbyPalletLocationOrgetnew(int.Parse(dr["NewPalletLocation"].ToString()));
                            //nrp.ReceivedQuantity = rp.ReceivedQuantity;
                            nrp.Balance       = writeoffAmout;
                            nrp.ReservedStock = 0;
                            //nrp.ReserveOrderID = rp.ReserveOrderID;
                            nrp.BoxSize           = rp.BoxSize;
                            nrp.PalletLocationID  = int.Parse(dr["NewPalletLocation"].ToString());
                            nrp.IsOriginalReceive = rp.IsOriginalReceive;



                            BLL.LossAndAdjustment d = new BLL.LossAndAdjustment();
                            d.AddNew();
                            d.GenerateRefNo();
                            d.ItemID   = Convert.ToInt32(dr["ItemID"]);
                            d.ReasonId = Convert.ToInt32(dr["Reason"]);
                            d.RecID    = rdoc.ID;
                            d.Quantity = writeoffAmout;
                            d.BatchNo  = rdoc.BatchNo;

                            CalendarLib.DateTimePickerEx edate = new CalendarLib.DateTimePickerEx();
                            edate.Value = DateTime.Today;
                            //TODO: fix to an ethiopian date here
                            edate.CustomFormat = "MM/dd/yyyy";

                            d.Date = ConvertDate.DateConverter(edate.Text);

                            d.EurDate = DateTime.Today;
                            d.Cost    = rdoc.IsColumnNull("Cost")? 0: Math.Abs(rdoc.Cost * writeoffAmout);
                            d.StoreId = rdoc.StoreID;
                            d.Losses  = true;
                            //todo:
                            d.ApprovedBy = CurrentContext.UserId.ToString();
                            //d.Remarks

                            InternalTransfer it = new  InternalTransfer();
                            it.AddNew();
                            it.ItemID = d.ItemID;
                            it.FromPalletLocationID = pl.GetPalletLocationIDByPalletID(int.Parse(dr["PalletID"].ToString()));
                            it.ToPalletLocationID   = nrp.PalletLocationID;
                            it.BatchNumber          = d.BatchNo;
                            if (!rdoc.IsColumnNull("ExpDate"))
                            {
                                it.ExpireDate = rdoc.ExpDate;
                            }
                            it.ReceiveDocID   = rdoc.ID;
                            it.ManufacturerID = rdoc.ManufacturerId;
                            it.QtyPerPack     = Convert.ToInt32(dr["QtyPerPack"]);
                            it.Packs          = rdoc.NoOfPack;
                            it.QuantityInBU   = nrp.Balance;


                            LossAndAdjustmentReason r = new LossAndAdjustmentReason();
                            it.Type = r.GetReasonByID(d.ReasonId);


                            // d.Save();
                            rdoc.Save();
                            rp.Save();

                            rdoc.QuantityLeft += writeoffAmout;
                            rdoc.Save();
                            nrp.Save();
                            it.Save();
                            int xs = it.ID;
                        }
                        else if (dr["ReLocate"] != DBNull.Value & reLocate > 0)
                        {
                            if (dr["ReLocate"] != DBNull.Value)
                            {
                                int amount     = Convert.ToInt32(dr["ReLocate"]);
                                int qtyPerPack = Convert.ToInt32(dr["QtyPerPack"]);
                                amount *= qtyPerPack;
                                rp.LoadByPrimaryKey(Convert.ToInt32(dr["ReceivePalletID"]));
                                rdoc.LoadByPrimaryKey(rp.ReceiveID);
                                int palletLocationID = Convert.ToInt32(dr["PalletLocationID"]);

                                int qPalletLocationID =
                                    PalletLocation.GetQuaranteenPalletLocationByPalletLocationID(palletLocationID); //PalletLocation.GetQuaranteenPalletLocation(Convert.ToInt32(dr["ID"]));
                                pl.LoadByPrimaryKey(qPalletLocationID);

                                ReceivePallet rp2    = new ReceivePallet();
                                ReceiveDoc    rd     = new ReceiveDoc();
                                Pallet        pallet = new Pallet();
                                rp.LoadByPrimaryKey(Convert.ToInt32(dr["ReceivePalletID"]));
                                rd.LoadByPrimaryKey(rp.ReceiveID);
                                pallet.AddNew();
                                Item item = new Item();
                                item.LoadByPrimaryKey(rdoc.ItemID);
                                if (item.StorageTypeID.ToString() == StorageType.BulkStore)
                                {
                                    pallet.PalletNo = Pallet.GetLastPanelNumber();
                                }
                                pallet.Save();
                                rp2.AddNew();
                                rp2.PalletID          = pl.GetpalletidbyPalletLocationOrgetnew(int.Parse(dr["NewPalletLocation"].ToString()));//pallet.ID;
                                rp2.ReceiveID         = rp.ReceiveID;
                                rp2.IsOriginalReceive = rp.IsOriginalReceive;
                                // calculate the new balance
                                BLL.ItemManufacturer im = new BLL.ItemManufacturer();
                                //im.LoadDefaultReceiving(rd.ItemID, Convert.ToInt32(dr["ManufacturerID"]));
                                //im.LoadIMbyLevel(rd.ItemID, Convert.ToInt32(dr["ManufacturerID"]), Convert.ToInt32(dr["BoxLevel"]));
                                //int packqty = (amount / im.QuantityInBasicUnit);
                                rd.QuantityLeft -= amount;
                                rp.Balance      -= amount;
                                rd.Save();
                                rp.Save();

                                rd.QuantityLeft += amount;
                                rp2.Balance      = amount;//packqty * im.QuantityInBasicUnit;
                                rd.Save();

                                rp2.BoxSize          = rp.BoxSize;
                                rp2.ReservedStock    = 0;
                                rp2.PalletLocationID = int.Parse(dr["NewPalletLocation"].ToString());
                                rp2.Save();

                                pl.Confirmed = false;
                                pl.Save();

                                // select the new pallet location here.

                                /*   XtraForm xdb = new XtraForm();
                                 * xdb.Controls.Add(panelControl2);
                                 * Item itms= new Item();
                                 * itms.GetItemByPrimaryKey(Convert.ToInt32(dr["ItemID"]));
                                 * lblItemName.Text = itms.FullItemName;
                                 * panelControl2.Visible = true;
                                 * panelControl2.Dock = DockStyle.Fill;
                                 * xdb.Text = "Select Location for relocated Item";
                                 * lkLocation.Properties.DataSource = PalletLocation.GetAllFreeFor(Convert.ToInt32(dr["ItemID"]));
                                 * xdb.ShowDialog();
                                 *
                                 * PalletLocation pl2 = new PalletLocation();
                                 * pl2.LoadByPrimaryKey(Convert.ToInt32(lkLocation.EditValue));
                                 * pl2.PalletID = pallet.ID;
                                 * pl2.Confirmed = false;
                                 * pl2.Save();
                                 */
                                InternalTransfer it = new InternalTransfer();

                                it.AddNew();
                                it.ItemID   = rd.ItemID;
                                it.BoxLevel = 0; // im.PackageLevel;
                                //it.ExpireDate = rd.ExpDate;
                                if (!rd.IsColumnNull("ExpDate"))
                                {
                                    it.ExpireDate = rd.ExpDate;
                                }
                                it.BatchNumber          = rd.BatchNo;
                                it.ManufacturerID       = Convert.ToInt32(dr["ManufacturerID"]);         //im.ManufacturerID;
                                it.FromPalletLocationID = qPalletLocationID;
                                it.ToPalletLocationID   = int.Parse(dr["NewPalletLocation"].ToString()); //pl2.ID;
                                it.QtyPerPack           = 1;
                                //it.Packs = pack qty;
                                it.ReceiveDocID = rp.ReceiveID;
                                it.QuantityInBU = amount; // it.QtyPerPack;
                                it.Type         = "ReLocation";
                                it.IssuedDate   = DateTime.Today;
                                it.Status       = 0;
                                it.PrintNumber  = printNubmer;
                                it.Save();
                            }
                        }
                    }
                    transaction.CommitTransaction();
                    BindQuarantine();
                    XtraMessageBox.Show("Quarantine Write off/Adjustment was commitd.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }
        private void btnAdjustments_Click(object sender, EventArgs e)
        {
            if (ValidateMoveToAdjustments())
            {
                if (DialogResult.Yes == XtraMessageBox.Show("Are you sure you would like to commit this adjustment?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
                {
                    PalletLocation pl          = new PalletLocation();
                    Pallet         p           = new Pallet();
                    ReceiveDoc     rdoc        = new ReceiveDoc();
                    ReceivePallet  rp          = new ReceivePallet();
                    int            printNubmer = InternalTransfer.GetNewPrintNumber() + 1;
                    for (int i = 0; i < gridView3.RowCount; i++)
                    {
                        DataRow dr = gridView3.GetDataRow(i);
                        if (dr["Adjust"] != DBNull.Value)
                        {
                            int amount = Convert.ToInt32(dr["Adjust"]);
                            rp.LoadByPrimaryKey(Convert.ToInt32(dr["ReceivePalletID"]));
                            rdoc.LoadByPrimaryKey(rp.ReceiveID);

                            rdoc.NoOfPack += amount;
                            amount        *= rdoc.QtyPerPack;
                            rp.Balance    += amount;
                            if (rp.IsColumnNull("ReceivedQuantity"))
                            {
                                rp.ReceivedQuantity = 0;
                            }
                            rp.ReceivedQuantity += amount;

                            rdoc.QuantityLeft += amount;
                            rdoc.Quantity     += amount;

                            BLL.LossAndAdjustment d = new BLL.LossAndAdjustment();
                            d.AddNew();
                            d.GenerateRefNo();
                            d.ItemID   = Convert.ToInt32(dr["ItemID"]);
                            d.ReasonId = Convert.ToInt32(dr["Reason"]);
                            d.RecID    = rdoc.ID;
                            d.Quantity = amount;
                            d.BatchNo  = rdoc.BatchNo;

                            CalendarLib.DateTimePickerEx edate = new CalendarLib.DateTimePickerEx();
                            edate.Value = DateTime.Today;

                            edate.CustomFormat = "MM/dd/yyyy";
                            d.Date             = ConvertDate.DateConverter(edate.Text);

                            d.EurDate = DateTime.Today;
                            if (!rdoc.IsColumnNull("Cost"))
                            {
                                d.Cost = Math.Abs(rdoc.Cost * amount);
                            }
                            d.StoreId    = rdoc.StoreID;
                            d.Losses     = false;
                            d.ApprovedBy = CurrentContext.UserId.ToString();
                            d.Save();
                            rdoc.Save();
                            rp.Save();
                        }
                    }
                    PopulateItemDetails();
                    XtraMessageBox.Show("Items adjusted successfully.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }
        private void btnMoveToQuaranteen_Click(object sender, EventArgs e)
        {
            if (ValidateMoveToQuaranteen())
            {
                if (DialogResult.Yes == XtraMessageBox.Show("Are you sure you want to move the items to Quarantine", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
                {
                    InternalItemMovements ims = new InternalItemMovements();
                    PalletLocation        pl  = new PalletLocation();
                    int printNubmer           = InternalTransfer.GetNewPrintNumber() + 1;
                    for (int i = 0; i < gridView3.RowCount; i++)
                    {
                        DataRow dr = gridView3.GetDataRow(i);
                        if (dr["Loss"] != DBNull.Value)
                        {
                            int amount           = Convert.ToInt32(dr["Loss"]);
                            int palletLocationID = Convert.ToInt32(dr["PalletLocationID"]);

                            ReceivePallet rp   = new ReceivePallet();
                            ReceiveDoc    rdoc = new ReceiveDoc();

                            rp.LoadByPrimaryKey(Convert.ToInt32(dr["ReceivePalletID"]));
                            rdoc.LoadByPrimaryKey(rp.ReceiveID);
                            amount *= rdoc.QtyPerPack;

                            if (rp.Balance - amount < rp.ReservedStock)
                            {
                                //Item has been reserved for a facility.  This needs to be handled.
                                DataTable dtble      = rp.GetFacilitiesItemsReservedFor();
                                string    facilities = "";
                                foreach (DataRow dRow in dtble.Rows)
                                {
                                    if (dr != null)
                                    {
                                        facilities += dRow["Name"].ToString() + System.Environment.NewLine;
                                    }
                                }
                                XtraMessageBox.Show("You cannot fill in a loss because the item in this location has been reserved to the following facilities:" + System.Environment.NewLine + facilities, "Exisiting reservations must be cancelled", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                return;
                            }

                            var receiveDocID = Convert.ToInt32(dr["ID"]);
                            var rec          = new ReceiveDoc();
                            rec.LoadByPrimaryKey(receiveDocID);

                            int qPalletLocationID = PalletLocation.GetQuaranteenPalletLocation(rec.PhysicalStoreID);
                            pl.LoadByPrimaryKey(qPalletLocationID);
                            if (pl.IsColumnNull("PalletID"))
                            {
                                Pallet p = new Pallet();
                                p.AddNew();
                                p.StorageTypeID = Convert.ToInt32(StorageType.Quaranteen);
                                p.Save();
                                pl.PalletID = p.ID;
                                pl.Save();
                            }


                            ReceivePallet rp2 = new ReceivePallet();
                            ReceiveDoc    rd  = new ReceiveDoc();


                            rd.LoadByPrimaryKey(rp.ReceiveID);
                            rp2.AddNew();

                            rp2.PalletID         = pl.PalletID;
                            rp2.ReceiveID        = rp.ReceiveID;
                            rp2.PalletLocationID = pl.ID;


                            // calculate the new balance
                            BLL.ItemManufacturer im = new BLL.ItemManufacturer();
                            //im.LoadDefaultReceiving(rd.ItemID, Convert.ToInt32(dr["ManufacturerID"]));
                            if (dr["BoxLevel"] == DBNull.Value)
                            {
                                dr["BoxLevel"] = 0;
                            }
                            im.LoadIMbyLevel(rd.ItemID, Convert.ToInt32(dr["ManufacturerID"]), Convert.ToInt32(dr["BoxLevel"]));
                            int packqty = (amount / im.QuantityInBasicUnit);
                            rp2.ReservedStock = 0;

                            BLL.ReceivePallet.MoveBalance(rp, rp2, amount);
                            //rp2.Balance = amount;
                            //rp.Balance -= rp2.Balance;

                            //rp.Save();
                            //rp2.Save();

                            pl.Confirmed = false;
                            pl.Save();
                            if (rp.Balance == 0)
                            {
                                PalletLocation.GarbageCollection();
                            }

                            InternalTransfer it = new InternalTransfer();
                            it.AddNew();
                            it.ItemID   = rd.ItemID;
                            it.BoxLevel = im.PackageLevel;
                            if (!rd.IsColumnNull("ExpDate"))
                            {
                                it.ExpireDate = rd.ExpDate;
                            }
                            it.BatchNumber          = rd.BatchNo;
                            it.ManufacturerID       = im.ManufacturerID;
                            it.FromPalletLocationID = palletLocationID;
                            it.ToPalletLocationID   = qPalletLocationID;
                            it.QtyPerPack           = im.QuantityInBasicUnit;
                            it.Packs        = packqty;
                            it.ReceiveDocID = rp.ReceiveID;
                            it.QuantityInBU = rp2.Balance; //it.Packs * it.QtyPerPack;
                            it.Type         = "ToQuaranteen";
                            it.IssuedDate   = DateTime.Today;
                            it.Status       = 0;
                            it.PrintNumber  = printNubmer;
                            it.Save();
                        }
                    }


                    gridConfirmationControl.DataSource = InternalTransfer.GetAllTransfers("ToQuaranteen");

                    PopulateItemDetails();
                    XtraMessageBox.Show("Your items are marked for movement to Quarantine, please go to Internal Movements page to confirm!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }
        public async Task <GetTransactionsByMemberUsernameResponse> Handle(GetTransactionsByMemberUsernameRequest query, CancellationToken cancellationToken)
        {
            var result = new GetTransactionsByMemberUsernameResponse();

            List <TransactionDTO> transactions = new List <TransactionDTO>();

            var owners = await _context.Owners
                         .Where(x => x.MemberUsername == query.MemberUsername)
                         .Include(a => a.Provider)
                         .Include(a => a.Wallets)
                         .AsNoTracking()
                         .ToListAsync(cancellationToken);

            foreach (var owner in owners)
            {
                foreach (var wallet in owner.Wallets)
                {
                    var pockets = await _context.Pockets
                                  .Where(x => x.WalletID == wallet.WalletID && x.CurrencyType != CurrencyType.Fiat)
                                  .Include(a => a.Currency)
                                  .Include(a => a.Transactions)
                                  .ToListAsync(cancellationToken);

                    foreach (var pocket in pockets)
                    {
                        foreach (var transaction in pocket.Transactions)
                        {
                            try
                            {
                                if (transaction.TransactionType == TransactionType.StartingBalance ||
                                    transaction.TransactionType == TransactionType.ExternalTransferIN ||
                                    transaction.TransactionType == TransactionType.ExternalTransferOUT ||
                                    transaction.TransactionType == TransactionType.InternalTransferIN ||
                                    transaction.TransactionType == TransactionType.InternalTransferOUT ||
                                    transaction.TransactionType == TransactionType.BuyIN ||
                                    transaction.TransactionType == TransactionType.BuyOUT ||
                                    transaction.TransactionType == TransactionType.SellIN ||
                                    transaction.TransactionType == TransactionType.SellOUT ||
                                    transaction.TransactionType == TransactionType.SyncBalanceImport ||
                                    transaction.TransactionType == TransactionType.SyncTransactionIN ||
                                    transaction.TransactionType == TransactionType.SyncTransactionOUT)
                                {
                                    TransactionDTO transactionDTO = new TransactionDTO
                                    {
                                        TransactionID             = transaction.TransactionID,
                                        SourceProviderName        = owner.Provider.Name,
                                        DestinationProviderName   = "Destination Provider Name",
                                        SourceWalletName          = wallet.Name,
                                        DestinationWalletName     = transaction.PairWalletName,
                                        SourceCurrencySymbol      = pocket.Currency.Symbol,
                                        DestinationCurrencySymbol = "Destination Currency Symbol",
                                        SourceCurrencyName        = pocket.Currency.Name,
                                        DestinationCurrencyName   = "Destination Currency Name",
                                        Amount                     = Math.Abs(transaction.Amount),
                                        UnitPriceInUSD             = transaction.UnitPriceInUSD,
                                        UnitPrice                  = 1,
                                        TransactionDateTime        = transaction.TransactionDateTime,
                                        TransactionType            = transaction.TransactionType,
                                        TransactionTypeDisplayText = transaction.TransactionTypeDisplayText,
                                        TradeID                    = null,
                                        InternalTransferID         = null
                                    };

                                    if (transaction.TransactionType == TransactionType.StartingBalance)
                                    {
                                        if (wallet.ProviderType == ProviderType.Personal)
                                        {
                                            transactionDTO.SourceProviderName = wallet.Name;
                                        }
                                        else
                                        {
                                            transactionDTO.SourceProviderName = $"{owner.Provider.Name} - {wallet.Name}";
                                        }

                                        transactionDTO.DestinationProviderName   = transaction.PairWalletName;
                                        transactionDTO.DestinationWalletName     = transaction.PairWalletName;
                                        transactionDTO.DestinationCurrencySymbol = pocket.Currency.Symbol;
                                        transactionDTO.DestinationCurrencyName   = pocket.Currency.Name;
                                    }
                                    else if (transaction.TransactionType == TransactionType.ExternalTransferIN ||
                                             transaction.TransactionType == TransactionType.ExternalTransferOUT)
                                    {
                                        if (wallet.ProviderType == ProviderType.Personal)
                                        {
                                            transactionDTO.SourceProviderName = wallet.Name;
                                        }

                                        transactionDTO.DestinationProviderName   = transaction.PairWalletName;
                                        transactionDTO.DestinationWalletName     = transaction.PairWalletName;
                                        transactionDTO.DestinationCurrencySymbol = pocket.Currency.Symbol;
                                        transactionDTO.DestinationCurrencyName   = pocket.Currency.Name;
                                        transactionDTO.TransactionID             = transaction.TransactionID;
                                    }
                                    else if (transaction.TransactionType == TransactionType.InternalTransferIN)
                                    {
                                        InternalTransfer internalTransfer = await _context.InternalTransfers
                                                                            .Where(x => x.ToTransactionID == transaction.TransactionID)
                                                                            .Include(a => a.FromTransaction)
                                                                            .ThenInclude(b => b.Pocket)
                                                                            .ThenInclude(c => c.Wallet)
                                                                            .ThenInclude(c => c.Owner)
                                                                            .ThenInclude(c => c.Provider)
                                                                            .SingleOrDefaultAsync(cancellationToken);

                                        if (internalTransfer != null)
                                        {
                                            if (wallet.ProviderType == ProviderType.Personal)
                                            {
                                                transactionDTO.SourceProviderName = wallet.Name;
                                            }

                                            if (internalTransfer.FromTransaction.Pocket.Wallet.Owner.Provider.ProviderType == ProviderType.Personal)
                                            {
                                                transactionDTO.DestinationProviderName = internalTransfer.FromTransaction.Pocket.Wallet.Name;
                                            }
                                            else
                                            {
                                                transactionDTO.DestinationProviderName = internalTransfer.FromTransaction.Pocket.Wallet.Owner.Provider.Name;
                                            }

                                            transactionDTO.DestinationWalletName     = internalTransfer.FromTransaction.Pocket.Wallet.Name;
                                            transactionDTO.DestinationCurrencySymbol = pocket.Currency.Symbol;
                                            transactionDTO.DestinationCurrencyName   = pocket.Currency.Name;
                                            transactionDTO.InternalTransferID        = internalTransfer.InternalTransferID;
                                        }
                                    }
                                    else if (transaction.TransactionType == TransactionType.InternalTransferOUT)
                                    {
                                        InternalTransfer internalTransfer = await _context.InternalTransfers
                                                                            .Where(x => x.FromTransactionID == transaction.TransactionID)
                                                                            .Include(a => a.ToTransaction)
                                                                            .ThenInclude(b => b.Pocket)
                                                                            .ThenInclude(c => c.Wallet)
                                                                            .ThenInclude(c => c.Owner)
                                                                            .ThenInclude(d => d.Provider)
                                                                            .SingleOrDefaultAsync(cancellationToken);

                                        if (internalTransfer != null)
                                        {
                                            if (wallet.ProviderType == ProviderType.Personal)
                                            {
                                                transactionDTO.SourceProviderName = wallet.Name;
                                            }

                                            if (internalTransfer.ToTransaction.Pocket.Wallet.Owner.Provider.ProviderType == ProviderType.Personal)
                                            {
                                                transactionDTO.DestinationProviderName = internalTransfer.ToTransaction.Pocket.Wallet.Name;
                                            }
                                            else
                                            {
                                                transactionDTO.DestinationProviderName = internalTransfer.ToTransaction.Pocket.Wallet.Owner.Provider.Name;
                                            }

                                            transactionDTO.DestinationWalletName     = internalTransfer.ToTransaction.Pocket.Wallet.Name;
                                            transactionDTO.DestinationCurrencySymbol = pocket.Currency.Symbol;
                                            transactionDTO.DestinationCurrencyName   = pocket.Currency.Name;
                                            transactionDTO.InternalTransferID        = internalTransfer.InternalTransferID;
                                        }
                                    }
                                    else if (transaction.TransactionType == TransactionType.BuyIN)
                                    {
                                        Trade tradeBuy = await _context.Trades
                                                         .Where(x => x.FromTransactionID == transaction.TransactionID)
                                                         .Include(a => a.ToTransaction)
                                                         .ThenInclude(b => b.Pocket)
                                                         .ThenInclude(c => c.Currency)
                                                         .Include(a => a.ToTransaction)
                                                         .ThenInclude(b => b.Pocket)
                                                         .ThenInclude(c => c.Wallet)
                                                         .SingleOrDefaultAsync(cancellationToken);

                                        if (tradeBuy != null)
                                        {
                                            transactionDTO.DestinationProviderName = owner.Provider.Name;
                                            transactionDTO.DestinationWalletName   = tradeBuy.ToTransaction.Pocket.Wallet.Name;
                                            transactionDTO.UnitPrice = tradeBuy.UnitPrice;
                                            transactionDTO.DestinationCurrencySymbol = tradeBuy.ToTransaction.Pocket.Currency.Symbol;
                                            transactionDTO.DestinationCurrencyName   = tradeBuy.ToTransaction.Pocket.Currency.Name;
                                            transactionDTO.TradeID = tradeBuy.TradeID;
                                        }
                                    }
                                    else if (transaction.TransactionType == TransactionType.BuyOUT)
                                    {
                                        Trade tradeBuy = await _context.Trades
                                                         .Where(x => x.ToTransactionID == transaction.TransactionID)
                                                         .Include(a => a.FromTransaction)
                                                         .ThenInclude(b => b.Pocket)
                                                         .ThenInclude(c => c.Currency)
                                                         .Include(a => a.FromTransaction)
                                                         .ThenInclude(b => b.Pocket)
                                                         .ThenInclude(c => c.Wallet)
                                                         .SingleOrDefaultAsync(cancellationToken);

                                        if (tradeBuy != null)
                                        {
                                            transactionDTO.DestinationProviderName = owner.Provider.Name;
                                            transactionDTO.DestinationWalletName   = tradeBuy.FromTransaction.Pocket.Wallet.Name;
                                            transactionDTO.UnitPrice = tradeBuy.FromTransaction.Amount / transactionDTO.Amount;
                                            transactionDTO.DestinationCurrencySymbol = tradeBuy.FromTransaction.Pocket.Currency.Symbol;
                                            transactionDTO.DestinationCurrencyName   = tradeBuy.FromTransaction.Pocket.Currency.Name;
                                            transactionDTO.TradeID = tradeBuy.TradeID;
                                        }
                                    }
                                    else if (transaction.TransactionType == TransactionType.SellIN)
                                    {
                                        Trade tradeSell = await _context.Trades
                                                          .Where(x => x.ToTransactionID == transaction.TransactionID)
                                                          .Include(a => a.FromTransaction)
                                                          .ThenInclude(b => b.Pocket)
                                                          .ThenInclude(c => c.Currency)
                                                          .Include(a => a.FromTransaction)
                                                          .ThenInclude(b => b.Pocket)
                                                          .ThenInclude(c => c.Wallet)
                                                          .SingleOrDefaultAsync(cancellationToken);

                                        if (tradeSell != null)
                                        {
                                            transactionDTO.DestinationProviderName = owner.Provider.Name;
                                            transactionDTO.DestinationWalletName   = tradeSell.FromTransaction.Pocket.Wallet.Name;
                                            transactionDTO.UnitPrice = Math.Abs(tradeSell.FromTransaction.Amount / transactionDTO.Amount);
                                            transactionDTO.DestinationCurrencySymbol = tradeSell.FromTransaction.Pocket.Currency.Symbol;
                                            transactionDTO.DestinationCurrencyName   = tradeSell.FromTransaction.Pocket.Currency.Name;
                                            transactionDTO.TradeID = tradeSell.TradeID;
                                        }
                                    }
                                    else if (transaction.TransactionType == TransactionType.SellOUT)
                                    {
                                        Trade tradeSell = await _context.Trades
                                                          .Where(x => x.FromTransactionID == transaction.TransactionID)
                                                          .Include(a => a.ToTransaction)
                                                          .ThenInclude(b => b.Pocket)
                                                          .ThenInclude(c => c.Currency)
                                                          .Include(a => a.ToTransaction)
                                                          .ThenInclude(b => b.Pocket)
                                                          .ThenInclude(c => c.Wallet)
                                                          .SingleOrDefaultAsync(cancellationToken);

                                        if (tradeSell != null)
                                        {
                                            transactionDTO.DestinationProviderName = owner.Provider.Name;
                                            transactionDTO.DestinationWalletName   = tradeSell.ToTransaction.Pocket.Wallet.Name;
                                            transactionDTO.UnitPrice = tradeSell.UnitPrice;
                                            transactionDTO.DestinationCurrencySymbol = tradeSell.ToTransaction.Pocket.Currency.Symbol;
                                            transactionDTO.DestinationCurrencyName   = tradeSell.ToTransaction.Pocket.Currency.Name;
                                            transactionDTO.TradeID = tradeSell.TradeID;
                                        }
                                    }
                                    else if (transaction.TransactionType == TransactionType.SyncBalanceImport ||
                                             transaction.TransactionType == TransactionType.SyncTransactionIN ||
                                             transaction.TransactionType == TransactionType.SyncTransactionOUT)
                                    {
                                        transactionDTO.SourceProviderName        = wallet.Name;
                                        transactionDTO.DestinationProviderName   = transaction.PairWalletName;
                                        transactionDTO.DestinationWalletName     = transaction.PairWalletName;
                                        transactionDTO.DestinationCurrencySymbol = pocket.Currency.Symbol;
                                        transactionDTO.DestinationCurrencyName   = pocket.Currency.Name;
                                    }

                                    transactions.Add(transactionDTO);
                                }
                            }
                            catch (Exception exception)
                            {
                                result.IsSuccessful = false;
                                result.ErrorMessage = exception.Message;
                            }
                        }
                    }
                }
            }

            result.IsSuccessful = true;
            result.Transactions = transactions.OrderByDescending(x => x.TransactionDateTime).ToList();

            return(result);
        }
Exemplo n.º 11
0
        public async Task <GetWalletResponse> Handle(GetWalletRequest query, CancellationToken cancellationToken)
        {
            Wallet wallet = await _context.Wallets
                            .Where(x => x.WalletID == query.WalletID)
                            .Include(a => a.Blockchain)
                            .Include(a => a.Pockets).ThenInclude(b => b.Currency)
                            .Include(a => a.Pockets).ThenInclude(b => b.Transactions)
                            .Include(a => a.Owner).ThenInclude(b => b.Provider)
                            .SingleOrDefaultAsync(cancellationToken);

            if (wallet == null)
            {
                throw new NotFoundException(nameof(Wallet), query.WalletID);
            }

            var result = new GetWalletResponse
            {
                WalletID          = wallet.WalletID,
                OwnerID           = wallet.OwnerID,
                BlockchainID      = wallet.BlockchainID,
                Name              = wallet.Name,
                Address           = wallet.Address,
                ProviderType      = wallet.ProviderType,
                IsSynchronized    = wallet.IsSynchronized,
                BlockchainName    = wallet.Blockchain.Name,
                OwnerProviderName = wallet.Owner.Provider.Name
            };

            #region Process Main Pocket

            var mainPocket = wallet.Pockets.Single(x => x.IsMain);

            PocketDTO mainPocketDTO = new PocketDTO
            {
                PocketID       = mainPocket.PocketID,
                WalletID       = mainPocket.WalletID,
                CurrencyID     = mainPocket.CurrencyID,
                CurrencyType   = mainPocket.CurrencyType,
                Address        = mainPocket.Address,
                Balance        = mainPocket.Transactions.Sum(x => x.Amount),
                CurrencySymbol = mainPocket.Currency.Symbol,
                CurrencyName   = mainPocket.Currency.Name,
                Transactions   = new List <TransactionDTO>()
            };

            result.MainPocket = mainPocketDTO;

            foreach (var transaction in mainPocket.Transactions)
            {
                if (transaction.TransactionType != TransactionType.BuyOUTNonWithholding &&
                    transaction.TransactionType != TransactionType.SellINNonWithholding)
                {
                    TransactionDTO transactionDTO = new TransactionDTO
                    {
                        TransactionID              = transaction.TransactionID,
                        PocketID                   = transaction.PocketID,
                        TransactionHash            = transaction.TransactionHash,
                        PairWalletName             = transaction.PairWalletName,
                        PairWalletAddress          = transaction.PairWalletAddress,
                        Amount                     = transaction.Amount,
                        UnitPriceInUSD             = transaction.UnitPriceInUSD,
                        TransactionType            = transaction.TransactionType,
                        TransactionDateTime        = transaction.TransactionDateTime,
                        TransactionTypeDisplayText = transaction.TransactionTypeDisplayText,
                        TradeID                    = null,
                        InternalTransferID         = null
                    };

                    if (transaction.TransactionType == TransactionType.InternalTransferOUT)
                    {
                        InternalTransfer internalTransfer = await _context.InternalTransfers
                                                            .Where(x => x.FromTransactionID == transaction.TransactionID)
                                                            .SingleOrDefaultAsync(cancellationToken);

                        if (internalTransfer != null)
                        {
                            transactionDTO.InternalTransferID = internalTransfer.InternalTransferID;
                        }
                    }
                    else if (transaction.TransactionType == TransactionType.InternalTransferIN)
                    {
                        InternalTransfer internalTransfer = await _context.InternalTransfers
                                                            .Where(x => x.ToTransactionID == transaction.TransactionID)
                                                            .SingleOrDefaultAsync(cancellationToken);

                        if (internalTransfer != null)
                        {
                            transactionDTO.InternalTransferID = internalTransfer.InternalTransferID;
                        }
                    }
                    else if (transaction.TransactionType == TransactionType.BuyIN)
                    {
                        Trade tradeBuy = await _context.Trades
                                         .Where(x => x.FromTransactionID == transaction.TransactionID)
                                         .Include(a => a.ToTransaction)
                                         .ThenInclude(b => b.Pocket)
                                         .ThenInclude(c => c.Currency)
                                         .SingleOrDefaultAsync(cancellationToken);

                        if (tradeBuy != null)
                        {
                            transactionDTO.TradeID = tradeBuy.TradeID;
                        }
                    }
                    else if (transaction.TransactionType == TransactionType.BuyOUT)
                    {
                        Trade tradeBuy = await _context.Trades
                                         .Where(x => x.ToTransactionID == transaction.TransactionID)
                                         .Include(a => a.FromTransaction)
                                         .ThenInclude(b => b.Pocket)
                                         .ThenInclude(c => c.Currency)
                                         .SingleOrDefaultAsync(cancellationToken);

                        if (tradeBuy != null)
                        {
                            transactionDTO.TradeID = tradeBuy.TradeID;
                        }
                    }
                    else if (transaction.TransactionType == TransactionType.SellOUT)
                    {
                        Trade tradeSell = await _context.Trades
                                          .Where(x => x.FromTransactionID == transaction.TransactionID)
                                          .Include(a => a.ToTransaction)
                                          .ThenInclude(b => b.Pocket)
                                          .ThenInclude(c => c.Currency)
                                          .SingleOrDefaultAsync(cancellationToken);

                        if (tradeSell != null)
                        {
                            transactionDTO.TradeID = tradeSell.TradeID;
                        }
                    }
                    else if (transaction.TransactionType == TransactionType.SellIN)
                    {
                        Trade tradeSell = await _context.Trades
                                          .Where(x => x.ToTransactionID == transaction.TransactionID)
                                          .Include(a => a.FromTransaction)
                                          .ThenInclude(b => b.Pocket)
                                          .ThenInclude(c => c.Currency)
                                          .SingleOrDefaultAsync(cancellationToken);

                        if (tradeSell != null)
                        {
                            transactionDTO.TradeID = tradeSell.TradeID;
                        }
                    }

                    mainPocketDTO.Transactions.Add(transactionDTO);
                }
            }

            #endregion

            #region Process Token Pockets

            foreach (Pocket pocket in wallet.Pockets.Where(x => !x.IsMain))
            {
                PocketDTO tokenPocketDTO = new PocketDTO
                {
                    PocketID       = pocket.PocketID,
                    WalletID       = pocket.WalletID,
                    CurrencyID     = pocket.CurrencyID,
                    CurrencyType   = pocket.CurrencyType,
                    Address        = pocket.Address,
                    Balance        = pocket.Transactions.Sum(x => x.Amount),
                    CurrencySymbol = pocket.Currency.Symbol,
                    CurrencyName   = pocket.Currency.Name
                };

                foreach (Transaction transaction in pocket.Transactions)
                {
                    tokenPocketDTO.Transactions.Add(new TransactionDTO
                    {
                        TransactionID              = transaction.TransactionID,
                        PocketID                   = transaction.PocketID,
                        TransactionHash            = transaction.TransactionHash,
                        PairWalletName             = transaction.PairWalletName,
                        PairWalletAddress          = transaction.PairWalletAddress,
                        Amount                     = transaction.Amount,
                        UnitPriceInUSD             = transaction.UnitPriceInUSD,
                        TransactionType            = transaction.TransactionType,
                        TransactionDateTime        = transaction.TransactionDateTime,
                        TransactionTypeDisplayText = transaction.TransactionTypeDisplayText,
                        TradeID                    = null,
                        InternalTransferID         = null
                    });
                }

                result.TokenPockets.Add(tokenPocketDTO);
            }
            ;

            #endregion

            result.IsSuccessful = true;

            return(result);
        }