private MasterDataValidationAndImportResponse GenerateResponse(MasterDataImportResponse res)
        {
            var response=new MasterDataValidationAndImportResponse();
            if (res == null) return response;

            response.ValidationResults = res.ValidationResults
                .Select(n => new StringifiedValidationResult()
                                 {
                                     Results =
                                         n.Results.Select(
                                             p => p.ErrorMessage).ToList(),
                                     Entity = n.EntityItem,
                                     Description = n.Description,
                                     IsValid = n.IsValid
                                 }).ToList();
            response.UploadedItemsCount = res.ValidationResults.Count(n => n.IsValid);
           return response;


        }
       private async Task<MasterDataImportResponse> ImportEntity(List<ImportEntity> importData)
       {
           var response = new MasterDataImportResponse();
           var entityType = (MasterDataCollective)Enum.Parse(typeof(MasterDataCollective), importData.FirstOrDefault().MasterDataCollective);
           switch (entityType)
           {
               case MasterDataCollective.Territory:
                   response = await _territoryImportService.ValidateAndSaveAsync(importData);
                   
                   break;

               case MasterDataCollective.Country:
                   response = await _countryImportService.ValidateAndSaveAsync(importData);
                  break;

               case MasterDataCollective.Region:
                   response = await _regionImportService.ValidateAndSaveAsync(importData);
                
                   break;
               case MasterDataCollective.Area:
                   response = await _areaImportService.ValidateAndSaveAsync(importData);

                   break;

               case MasterDataCollective.AssetCategory:
                   response = await _assetCategoryImportService.ValidateAndSaveAsync(importData);
                   break;
               case MasterDataCollective.Bank:
                   response = await _bankImportService.ValidateAndSaveAsync(importData);
                   break;
               case MasterDataCollective.BankBranch:
                   response = await _bankBranchImportService.ValidateAndSaveAsync(importData);
                   break;

               case MasterDataCollective.ProductBrand:
                   response = await _productBrandImportService.ValidateAndSaveAsync(importData);
                  
                   break;
               case MasterDataCollective.VatClass:
                   response = await _vatClassImportService.ValidateAndSaveAsync(importData);
                   break;
               case MasterDataCollective.Supplier:
                   response = await _supplierImportService.ValidateAndSaveAsync(importData);
                   break;

               case MasterDataCollective.ProductFlavour:
                   response = await _productFlavourImportService.ValidateAndSaveAsync(importData);
                   break;
               case MasterDataCollective.ProductPackagingType:
                   response = await _productPackagingTypeImportService.ValidateAndSaveAsync(importData);
                   break;
               case MasterDataCollective.ProductType:
                   response = await _productTypeImportService.ValidateAndSaveAsync(importData);
                   break;
               case MasterDataCollective.PricingTier:
                   response = await _pricingTierImportService.ValidateAndSaveAsync(importData);
                   break;
               case MasterDataCollective.OutletCategory:
                   response = await _outletCategoryImportService.ValidateAndSaveAsync(importData);
                   break;
               case MasterDataCollective.OutletType:
                   response = await _outletTypeImportService.ValidateAndSaveAsync(importData);
                   break;
               
               case MasterDataCollective.ContactType:
                   response = await _contactTypeImportService.ValidateAndSaveAsync(importData);
                   break;
               case MasterDataCollective.Province:
                   response = await _provinceImportService.ValidateAndSaveAsync(importData);
                   break;
               case MasterDataCollective.District:
                   response = await _districtImportService.ValidateAndSaveAsync(importData);
                   break;
               case MasterDataCollective.SaleProduct:
                   response = await _saleProductImportService.ValidateAndSaveAsync(importData);
                   break;

               case MasterDataCollective.Pricing:
                   response = await _pricingImportService.ValidateAndSaveAsync(importData);
                   break;

               case MasterDataCollective.DiscountGroup:
                   response = await _discountGroupImportService.ValidateAndSaveAsync(importData);
                   break;
               case MasterDataCollective.PromotionDiscount:
                   response = await _promotionDiscountImportService.ValidateAndSaveAsync(importData);
                   break;
               case MasterDataCollective.ProductGroupDiscount:
                   response = await _productGroupDiscountImportService.ValidateAndSaveAsync(importData);
                   break;
               case MasterDataCollective.SaleValueDiscount:
                   response = await _saleValueDiscountImportService.ValidateAndSaveAsync(importData);
                   break;
               case MasterDataCollective.DistributorSalesman:
                   response =await  _salesmanImportService.ValidateAndSaveAsync(importData);
                   break;
               case MasterDataCollective.Outlet:
                   response = await _outletImportService.ValidateAndSaveAsync(importData);
                   break;
               case MasterDataCollective.Route:
                   response = await _routeImportService.ValidateAndSaveAsync(importData);
                   break;
               case MasterDataCollective.ProductPackaging:
                   response = await _productPackagingImportService.ValidateAndSaveAsync(importData);
                   break;
                   case MasterDataCollective.Distributor:
                   response = await _distributorsImportService.ValidateAndSaveAsync(importData);
                   break;

                   #region Agrimanagr
                   case MasterDataCollective.Commodity:
                   response = await _commodityImportService.ValidateAndSaveAsync(importData);
                   break;
                   case MasterDataCollective.CommodityType:
                   response = await _commodityTypeImportService.ValidateAndSaveAsync(importData);
                   break;
                   case MasterDataCollective.CommodityOwnerType:
                   response = await _commodityOwnerTypeImportService.ValidateAndSaveAsync(importData);
                   break;
                   case MasterDataCollective.CommodityOwner:
                   response = await _commodityOwnerImportService.ValidateAndSaveAsync(importData);
                   break;
                   case MasterDataCollective.CommoditySupplier:
                   response = await _commoditySupplierImportService.ValidateAndSaveAsync(importData);
                   break;
                   #endregion

                   default:
                   var shipto = importData.FirstOrDefault();
                   if (shipto != null && shipto.MasterDataCollective.Contains("shipto"))
                   {
                       response = await _shiptoAddressesImportService.ValidateAndSaveAsync(importData);
                   }
                   else
                   {
                       response.Result = "Success";
                       response.ResultInfo = "No entity to be imported";
                       response.ErrorInfo = "Success"; 
                   }
                   break;
           }
           int count = response.ValidationResults.Where(n => !n.IsValid).Count();
           response.ResultInfo = response.ValidationResults.Any(n => !n.IsValid) ? "Completed with errors" : "Success";
           response.Result = "success";
           return response;
       }