Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
     }
 }
Beispiel #4
0
        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);
        }