public void SubmitChanges(CommodityWarehouseStorageNote document)
        {
            int sequence = 0;
            var envelope = new CommandEnvelope();
            envelope.Initialize(document);
            List<DocumentCommand> commandsToExecute = document.GetDocumentCommandsToExecute();

            CreateCommand createCommand = commandsToExecute.OfType<CreateCommand>().FirstOrDefault();
             if (createCommand != null)
                 envelope.CommandsList.Add(new CommandEnvelopeItem(++sequence, createCommand));
            List<AfterCreateCommand> lineItemCommands = commandsToExecute.OfType<AfterCreateCommand>().ToList();
            foreach (var item in lineItemCommands)
            {
                envelope.CommandsList.Add(new CommandEnvelopeItem(++sequence, item));

            }

            List<AfterConfirmCommand> lineItemConfirmCommands = commandsToExecute.OfType<AfterConfirmCommand>().ToList();
            foreach (var item in lineItemConfirmCommands)
            {
                envelope.CommandsList.Add(new CommandEnvelopeItem(++sequence, item));


            }

            ConfirmCommodityWarehouseStorageCommand confirmCommodityWarehouseStorageCommand = commandsToExecute.OfType<ConfirmCommodityWarehouseStorageCommand>().FirstOrDefault();
            if (confirmCommodityWarehouseStorageCommand != null)
                envelope.CommandsList.Add(new CommandEnvelopeItem(++sequence, confirmCommodityWarehouseStorageCommand));


            ApproveCommodityWarehouseStorageCommand approveCommand = commandsToExecute.OfType<ApproveCommodityWarehouseStorageCommand>().FirstOrDefault();
            if (approveCommand != null)
                envelope.CommandsList.Add(new CommandEnvelopeItem(++sequence, approveCommand));


            StoreCommodityWarehouseStorageCommand storeCommand = commandsToExecute.OfType<StoreCommodityWarehouseStorageCommand>().FirstOrDefault();
            if (storeCommand != null)
                envelope.CommandsList.Add(new CommandEnvelopeItem(++sequence, storeCommand));

            _commandEnvelopeRouter.RouteCommandEnvelope(envelope);


        }
        private WarehouseEntryDocumentListItem Map(CommodityWarehouseStorageNote document)
        {
            
            
            var item = new WarehouseEntryDocumentListItem();
            item.RowNumber = RowNumber;
            item.DocumentId = document.Id;
            item.DocumentReference = document.DocumentReference;
            item.DocumentDateIssued = document.DocumentDateIssued;
            item.Driver = document.DriverName;
            item.RegistrationNumber = document.VehiclRegNo;
           
            var commodityWarehouseStorageLineItem = document.LineItems.FirstOrDefault();

            if (commodityWarehouseStorageLineItem != null)
            {
                item.CommodityGrade = commodityWarehouseStorageLineItem.CommodityGrade != null ? commodityWarehouseStorageLineItem.CommodityGrade.Name : "";
                item.Commodity = commodityWarehouseStorageLineItem.Commodity.Name;
                item.TotalWeight = commodityWarehouseStorageLineItem.Weight;
            }
          
            using(var c = ObjectFactory.Container.GetNestedContainer())
            {
                var commodityOwner = c.GetInstance<ICommodityOwnerRepository>().GetById(document.CommodityOwnerId);
                if(commodityOwner!=null)
                {
                    item.CommodityOwner = commodityOwner.FullName;
                } 
            }

            RowNumber++;
            return item;
        }
        private WarehouseGRNListItem Map(CommodityWarehouseStorageNote commodityWarehouseStorageNote)
        {
            var item = new WarehouseGRNListItem();

            item.DocumentId = commodityWarehouseStorageNote.Id;

            var commodityWarehouseStorageLineItem = commodityWarehouseStorageNote.LineItems.FirstOrDefault();
            if (commodityWarehouseStorageLineItem != null)
            {
                item.Commodity = commodityWarehouseStorageLineItem.Commodity.Name;
                item.CommodityGrade = commodityWarehouseStorageLineItem.CommodityGrade.Name;

                item.CommodityId = commodityWarehouseStorageLineItem.Commodity.Id.ToString();
                item.CommodityGradeId = commodityWarehouseStorageLineItem.CommodityGrade.Id.ToString();

                item.InitialWeight = commodityWarehouseStorageLineItem.Weight;
                item.FinalWeight = commodityWarehouseStorageLineItem.FinalWeight;
                item.CommodityWeight = item.InitialWeight - item.FinalWeight;
            }
            item.IsSelected = false;
            item.CommodityOwner = Using<ICommodityOwnerRepository>(NestedContainer)
                                .GetById(commodityWarehouseStorageNote.CommodityOwnerId).FullName;
            item.CommodityOwnerName = Using<ICommodityOwnerRepository>(NestedContainer)
                                  .GetById(commodityWarehouseStorageNote.CommodityOwnerId);

            //Check if farmer exist in EAGC
            SelectedCommodityOwner = item.CommodityOwnerName;

            return item;
        }