public async Task <ExecutionResult> Execute(ExecuteContext <IAssignCatalogArguments> context) { try { var arguments = context.Arguments; if (!arguments.ParentId.HasValue) { throw new Exception("Catalog cannot be assigned to master company"); } if (arguments.CatalogId.HasValue) { await _companyCatalogService.AssignCatalogToCompany(arguments.ParentId.Value, arguments.CompanyId, arguments.CatalogId.Value); } else { await _companyCatalogService.AssignDefaultCatalogToCompany(arguments.ParentId.Value, arguments.CompanyId); } await _companyCatalogService.GenerateDefaultCompanyCatalog(arguments.CompanyId); return(context.Completed()); } catch (Exception ex) { this.Log().Error("Error executing CreateCompanyPriceCatalogActivity", ex); throw; } }
public async Task Consume(ConsumeContext <IUpdateCompanyCommand> context) { var companyArguments = context.Message; var companyModel = Map(companyArguments); var company = _companyService.GetCompany(companyArguments.CompanyId); if (company?.Type == CompanyType.Reseller) { var oldUri = $"http://{company.ControlPanelSiteUrl}/static/callback.html"; var newUri = $"http://{companyArguments.ControlPanelSiteUrl}/static/callback.html"; var oldSilentUri = $"http://{company.ControlPanelSiteUrl}/static/silent.html"; var newSilentUri = $"http://{companyArguments.ControlPanelSiteUrl}/static/silent.html"; await _clientService.UpdateRedirectUri(oldUri, newUri); await _clientService.UpdateRedirectUri(oldSilentUri, newSilentUri); await _clientService.UpdatePostLogoutRedirectUri(company.ControlPanelSiteUrl, $"http://{companyArguments.ControlPanelSiteUrl}"); } await _companyService.UpdateAsync(companyModel); if (companyModel.ParentId.HasValue && companyModel.CatalogId.HasValue) { await _companyCatalogService.AssignCatalogToCompany(companyModel.ParentId.Value, companyModel.Id, companyModel.CatalogId.Value); } }
public async Task <IHttpActionResult> Update(int catalogId, UpdateCatalogViewModel model) { var catalog = await _companyCatalogService.GetCompanyCatalog(User.CompanyId(), catalogId); var myCompaniesAssignedToCatalog = await _companyCatalogService.GetCompaniesAssignedToCatalog(User.CompanyId(), catalogId); var newlyAssigned = model.CompaniesAssignedToCatalog.Where(o => model.CompaniesAssignedToCatalog.Any() && myCompaniesAssignedToCatalog.All(n => o != n.CompanyId)).Select(c => c); var removed = myCompaniesAssignedToCatalog.Where(n => model.CompaniesAssignedToCatalog.All(o => n.CompanyId != o)).Select(c => c.CompanyId); foreach (var newlyAssignedCompanyId in newlyAssigned) { await _companyCatalogService.AssignCatalogToCompany(User.CompanyId(), newlyAssignedCompanyId, catalogId); } foreach (var removedCompanyId in removed) { await _companyCatalogService.RemoveCompanyFromAssignedCatalog(User.CompanyId(), removedCompanyId); } await _companyCatalogService.UpdateCompanyCatalog(User.CompanyId(), catalogId, new CatalogModel { Name = model.Name, Description = model.Description }); foreach (var newModel in model.ProductItems) { //var currentModel = catalog.Products // .Select(p => p.ProductItems.FirstOrDefault(pi => pi.ProductItemId == newModel.ProductItemId)) // .FirstOrDefault(); var currentModel = catalog.Products.SelectMany(p => p.ProductItems).FirstOrDefault(i => i.ProductItemId == newModel.ProductItemId); if (currentModel == null) { throw new Exception(); } if (currentModel.Available != newModel.Available) { await _catalogProductItemService.ChangeProductAvailability(User.CompanyId(), catalogId, newModel.ProductItemId, newModel.Available); } await _catalogHelper.UpdateFixedRetailPrice(User.UserId(), User.CompanyId(), currentModel, newModel, catalogId); await _catalogHelper.UpdateRetailPrice(User.UserId(), User.CompanyId(), currentModel, newModel, catalogId); await _catalogHelper.UpdateResellerPrice(User.CompanyId(), currentModel, newModel, catalogId); } return(Ok(await _catalogHelper.GetCatalog(User.CompanyId(), catalogId))); }