private void Load()
        {

            using (var c = NestedContainer)
            {
                if (LineItems.Any())
                    LineItems.Clear();
                switch (DocumentType)
                {
                    case DocumentType.CommodityReceptionNote:
                        var receptionNote =
                            Using<ICommodityReceptionRepository>(c).GetById(DocumentId) as CommodityReceptionNote;
                        foreach (var lineitem in receptionNote.LineItems)
                        {
                            var lineItem = new CommodyLineItemViewModel
                                               {
                                                   Id = lineitem.Id,
                                                   GrossWeight = lineitem.Weight + lineitem.ContainerType.TareWeight,
                                                   NetWeight = lineitem.Weight,
                                                   ContainerType = lineitem.ContainerType,
                                                   Commodity = lineitem.Commodity,
                                                   CommodityGrade = lineitem.CommodityGrade,
                                                   ContainerNo = lineitem.ContainerNo,
                                                   Description = lineitem.Description,

                                               };
                            LineItems.Add(lineItem);
                        }
                        DocumentReference = receptionNote.DocumentReference;
                        break;

                    case DocumentType.CommodityPurchaseNote:
                        var purchaseNote =
                            Using<ICommodityPurchaseRepository>(c).GetById(DocumentId) as CommodityPurchaseNote;
                        foreach (var lineitem in purchaseNote.LineItems)
                        {
                            var lineItem = new CommodyLineItemViewModel
                                               {
                                                   Id = lineitem.Id,
                                                   GrossWeight = lineitem.Weight + lineitem.ContainerType.TareWeight,
                                                   NetWeight = lineitem.Weight,
                                                   ContainerType = lineitem.ContainerType,
                                                   Commodity = lineitem.Commodity,
                                                   CommodityGrade = lineitem.CommodityGrade,
                                                   ContainerNo = lineitem.ContainerNo,
                                                   Description = lineitem.Description,

                                               };
                            LineItems.Add(lineItem);
                        }
                        DocumentReference = purchaseNote.DocumentReference;
                        break;
                    case DocumentType.CommodityStorageNote:
                        var storageNote =
                            Using<ICommodityStorageRepository>(c).GetById(DocumentId) as CommodityStorageNote;
                        foreach (var lineitem in storageNote.LineItems)
                        {
                            var lineItem = new CommodyLineItemViewModel
                                               {
                                                   Id = lineitem.Id,
                                                   GrossWeight = lineitem.Weight ,
                                                   NetWeight = lineitem.Weight,
                                                   //ContainerType = lineitem.ContainerType,
                                                   Commodity = lineitem.Commodity,
                                                   CommodityGrade = lineitem.CommodityGrade,
                                                   ContainerNo = lineitem.ContainerNo,
                                                   Description = lineitem.Description,

                                               };
                            LineItems.Add(lineItem);
                        }
                        DocumentReference = storageNote.DocumentReference;
                        break;
                    case DocumentType.CommodityDelivery:
                        var deliveryNote =
                            Using<ICommodityDeliveryRepository>(c).GetById(DocumentId) as CommodityDeliveryNote;
                        foreach (var lineitem in deliveryNote.LineItems)
                        {
                            var lineItem = new CommodyLineItemViewModel
                                               {
                                                   Id = lineitem.Id,
                                                   GrossWeight = lineitem.Weight + lineitem.ContainerType.TareWeight,
                                                   NetWeight = lineitem.Weight,
                                                   ContainerType = lineitem.ContainerType,
                                                   Commodity = lineitem.Commodity,
                                                   CommodityGrade = lineitem.CommodityGrade,
                                                   ContainerNo = lineitem.ContainerNo,
                                                   Description = lineitem.Description,

                                               };
                            LineItems.Add(lineItem);
                        }
                        DocumentReference = deliveryNote.DocumentReference;
                        break;
                    case DocumentType.ReceivedDelivery:
                        var receivedDelivery =
                            Using<IReceivedDeliveryRepository>(c).GetById(DocumentId) as ReceivedDeliveryNote;
                        foreach (var lineitem in receivedDelivery.LineItems)
                        {
                            var item = new CommodyLineItemViewModel
                                               {
                                                   Id = lineitem.Id,
                                                   GrossWeight = lineitem.Weight,
                                                   NetWeight = lineitem.Weight,
                                                   CommodityGrade = lineitem.CommodityGrade,
                                                   ContainerNo = lineitem.ContainerNo,
                                                   Description = lineitem.Description,
                                                   Commodity =lineitem.Commodity,
                                                    ContainerType = lineitem.ContainerType

                                               };
                            LineItems.Add(item);
                        }
                        DocumentReference = receivedDelivery.DocumentReference;
                        ShowTareWeight=Visibility.Collapsed;
                        break;
                }

            }
        }
        private CommodyLineItemViewModel Map(ReceivedDeliveryLineItem lineItem,Guid documentid)
        {

            var item = new CommodyLineItemViewModel
                           {
                               Id = lineItem.Id,
                               Commodity = lineItem.Commodity??lineItem.CommodityGrade.Commodity,
                               Description = lineItem.Description,
                               ContainerNo = lineItem.ContainerNo,
                               CommodityGrade = lineItem.CommodityGrade,
                               ParentLineItemId = lineItem.ParentDocId,
                               NetWeight =lineItem.Weight,
                               DocumentId = documentid,
                               ContainerType = lineItem.ContainerType,
                             // NoOfContainers = lineItem.

                           };
            return item;
        }
        public void LoadReceipt(CommodityPurchaseNote purchaseNote)
        {
            if (purchaseNote !=null)
            {
                ReceiptLineItemsList.Clear();
                Reset(); 
                
                using (IContainer cont = NestedContainer)
                {
                    var _costCentreRepo = Using<ICostCentreRepository>(cont);
                    var costCentre = _costCentreRepo.GetById(purchaseNote.DocumentIssuerCostCentre.ParentCostCentre.Id);
                    CompanyName = costCentre.Name;
                }

                if (purchaseNote.DocumentIssuerCostCentre != null)
                {
                    HubName = purchaseNote.DocumentIssuerCostCentre.Name;
                }
                if (purchaseNote.CommodityOwner != null)
                {

                    FarmerName = purchaseNote.CommodityOwner.FullName;
                    FamerNo = purchaseNote.CommodityOwner.Code;

                    TelNo = purchaseNote.CommodityOwner.PhoneNumber;
                    FaxNo = purchaseNote.CommodityOwner.FaxNumber;
                    FarmerEmail = purchaseNote.CommodityOwner.Email;
                }

                TotalWeight = purchaseNote.LineItems.Sum(n => n.Weight);

                DeliveredBy = purchaseNote.DeliveredBy;

                ServedByUserName = purchaseNote.DocumentIssuerUser.Username;

                ReceiptNo = purchaseNote.DocumentReference;
                try
                {

                    using (var c = NestedContainer)
                    {
                        var contact =
                            Using<IContactRepository>(c).GetByContactsOwnerId(purchaseNote.DocumentIssuerCostCentre.Id);

                        if(contact !=null)
                        {
                            if(contact.Any())
                                CompanyEmail = contact.FirstOrDefault().Email;
                        }
                       
                    }
                }catch
                {
                }
               

                foreach (var item in purchaseNote.LineItems)
                {
                    var commodityItem = new CommodyLineItemViewModel()
                    {
                        Id = item.Id,
                        Commodity = item.Commodity,
                        CommodityGrade = item.CommodityGrade,
                        ContainerNo = item.ContainerNo,
                        ContainerType = item.ContainerType,
                        Description = item.Description,
                        GrossWeight = (item.Weight+item.TareWeight+item.ContainerType.BubbleSpace),
                        NetWeight = item.Weight,
                        BubbleSpace =item.ContainerType.BubbleSpace,
                        TareWeight =item.TareWeight
                        
                    };
                    ReceiptLineItemsList.Add(commodityItem);

                }
                

            }
        }
        private void RemoveLineItem(CommodyLineItemViewModel item)
        {
            if (LineItems.Any(p => p.Id == item.Id))
            try
            {
               
                if (
                   MessageBox.Show("Are you sure you want to remove " + item.Description,
                                   "Agrimanagr: Commodity Purchase", MessageBoxButton.YesNo,
                                   MessageBoxImage.Exclamation) == MessageBoxResult.Yes)
                {
                    LineItems.Remove(item);
                    if (ContainerSummaryList.Any(p => p.Id == item.Id))
                        ContainerSummaryList.Remove(item);

               
                }
            }
            catch(Exception e)
            {
            }
           
              
        }
 private void AddToCotainer(CommodyLineItemViewModel item)
 {
     if (!IsValid())
         return;
     ContainerSummaryList.Add(item);
 }
        private void AddLineItem()
        {
            try
            {
               if (!IsValid())
                    return;
              
               var container = _isUsingWeighingContainerForStorage
                                  ? SelectedWeighingContainer
                                  : SelectedStorageContainer;

               if ((container == null && !_isUsingWeighingContainerForStorage) || (container !=null && container.Id == Guid.Empty))
                {
                    MessageBox.Show("Storage Container is required",
                                   "Agrimanagr Error", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }

                if (NetWeight <= 0)
                {
                    MessageBox.Show("A commodity with zero weight cannot be added!",
                                    "Agrimanagr Error", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }
                if (_enforceNoOfContainers && NoOfContainers<1)
                {
                    MessageBox.Show("No of containers is required",
                                    "Agrimanagr Error", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }

                if (SelectedWeighingContainer.Id == Guid.Empty)
                {
                    MessageBox.Show("Select weighing container", "Agrimanagr Info",
                        MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }

                var lineItem = new CommodyLineItemViewModel
                {
                    Id = Guid.NewGuid(),
                    GrossWeight = GrossWeight,
                    NetWeight = NetWeight,
                    ContainerType = container,
                    Commodity = SelectedCommodity,
                    CommodityGrade = SelectedGrade,
                    ContainerNo = ContainerNo,
                    Description = SelectedCommodity.Name,
                    Note = "",
                    NoOfContainers = NoOfContainers,
                    TareWeight = TareWeight

                };

                LineItems.Add(lineItem);
                AddToCotainer(lineItem);

                CalcTotalWeight();
                ResetAfterAddLineItem();

            }
            catch (Exception ex)
            {
                MessageBox.Show("An error occured while adding line item. " + ex.Message, "Agrimanagr: Error", MessageBoxButton.OK,
                                MessageBoxImage.Error);
            }
        }