public Pricelist[] GetPricelistsByIdAsync(string[] ids) { var pricingRepositoryImpl = new PricingRepositoryImpl(); Pricelist[] priceList = null; VirtoCommerce.Domain.Pricing.Model.Pricelist[] result = null; if (ids != null) { using (var repository = new PricingModuleCoreContext()) { var pricelistEntities = pricingRepositoryImpl.GetPricelistByIds(ids); result = pricelistEntities.Select(x => x.ToModel(AbstractTypeFactory <Pricelist> .TryCreateInstance())).ToArray(); List <Pricelist> list = result.OfType <Pricelist>().ToList(); priceList = list.Cast <Pricelist>().ToArray(); foreach (var res in priceList) { res.Vendors = repository.GetVendorAssigned(res.Id); } return(priceList); } } return(priceList); }
public void DeletePriceList(string[] priceListsid) { if (priceListsid == null) { throw new ArgumentNullException(nameof(priceListsid)); } var pricingRepositoryImpl = new PricingRepositoryImpl(); if (priceListsid == null) { throw new ArgumentNullException("priceListsid is null"); } using (var repository = new PricingModuleCoreContext()) { var priceDetailList = repository.GetPriceListDetails(priceListsid); foreach (var result in priceDetailList) { repository.Remove(result); CommitChanges(repository); } } pricingRepositoryImpl.DeletePricelists(priceListsid); }
public override void SetupDatabase() { // Modify database schema with EF migrations using (var context = new PricingModuleCoreContext(_connectionStringName, _container.Resolve <TravelPricingAuditableInterceptor>())) { var initializer = new SetupDatabaseInitializer <PricingModuleCoreContext, Data.Repositories.Migrations.Configuration>(); initializer.InitializeDatabase(context); } }
public virtual async Task SavePricelistsAsync(Pricelist[] priceLists) { if (priceLists == null) { throw new ArgumentNullException(nameof(priceLists)); } var pkMap = new PrimaryKeyResolvingMap(); var pricingRepositoryImpl = new PricingRepositoryImpl(); using (var repository = new PricingModuleCoreContext()) { using (var changeTracker = GetChangeTracker(repository)) { bool saveFailed; var pricelistsIds = priceLists.Select(x => x.Id).Where(x => x != null).Distinct().ToArray(); var alreadyExistEntities = GetPricelistsByIdAsync(pricelistsIds); foreach (var pricelist in priceLists) { var sourceEntity = AbstractTypeFactory <PricelistExEntity> .TryCreateInstance().FromModel(pricelist, pkMap); var targetEntityAlreadyExist = alreadyExistEntities.FirstOrDefault(x => x.Id == pricelist.Id); if (targetEntityAlreadyExist != null) { var targetEntity = AbstractTypeFactory <PricelistExEntity> .TryCreateInstance().ToModel(targetEntityAlreadyExist); repository.Attach(targetEntity); sourceEntity.Patch(targetEntity); } else { repository.Add(sourceEntity); } } do { saveFailed = false; try { CommitChanges(repository); pkMap.ResolvePrimaryKeys(); } catch (DbUpdateConcurrencyException ex) { var entry = ex.Entries.Single(); entry.OriginalValues.SetValues(entry.GetDatabaseValues()); } } while (saveFailed); } } }
protected virtual IQueryable <PricelistEntity> BuildQuery(PricingModuleCoreContext repository, PricelistSearchCriteria criteria) { var query = repository.Pricelists; if (!string.IsNullOrEmpty(criteria.Keyword) && criteria.Keyword != "null") { query = query.Where(x => x.Name.Contains(criteria.Keyword) || x.Description.Contains(criteria.Keyword)); } if (!criteria.Currencies.IsNullOrEmpty()) { query = query.Where(x => criteria.Currencies.Contains(x.Currency)); } return(query); }
public virtual async Task <PricelistSearchResult> SearchPricelistsAsync(PricelistSearchCriteria criteria, bool isAdmin, string isUserName, string selectedVendorId) { var result = AbstractTypeFactory <PricelistSearchResult> .TryCreateInstance(); loginUserSelectedVendor = selectedVendorId; using (var repository = new PricingModuleCoreContext()) { var query = BuildQuery(repository, criteria); if (criteria.Take > 0) { var pricelistIds = await query.Select(x => x.Id) .ToArrayAsync(); var unorderedResults = _pricingService.GetPricelistsByIdAsync(pricelistIds); if (!isAdmin) { loginUserAssignedVendor = GetUserTypePermission(isUserName); string[] scopeIds = loginUserAssignedVendor.Split(','); var resultList = unorderedResults.Where(c => scopeIds.Contains(c.Vendors)); var priceList = resultList.Where(x => x.Vendors == selectedVendorId); result.Results = priceList.ToList(); return(result); } else { loginUserAssignedVendor = null; if (selectedVendorId != "null") { var priceList = unorderedResults.OrderBy(x => Array.IndexOf(pricelistIds, x.Id)).ToList(); var priceListforSelectedVendor = priceList.Where(x => x.Vendors == selectedVendorId); result.Results = priceListforSelectedVendor.ToList(); //result.Results = r.ToList(); return(result); } else { loginUserSelectedVendor = null; result.Results = unorderedResults.OrderBy(x => Array.IndexOf(pricelistIds, x.Id)).ToList(); return(result); } } } } return(result); }