async Task <Guid> AddProductAttributeTerm(ProductAttributeTerm sourcePAT, Guid sourceParentAttributeId, WooProductAttributeTermMap sourceWooAttributeTermMapsourceParentAttributeId) { Guid _itemAttributeTermId = Guid.Empty; IAppRepository <WooProductAttributeTermMap> _wooAttributeTermMapRepository = _AppUnitOfWork.Repository <WooProductAttributeTermMap>(); // Add Item AttributeTerm if it does not exist _itemAttributeTermId = await AddOrGetIDItemAttributeVariety(sourcePAT, sourceParentAttributeId); if (sourceWooAttributeTermMapsourceParentAttributeId == null) { sourceWooAttributeTermMapsourceParentAttributeId = new WooProductAttributeTermMap { WooProductAttributeTermId = (int)sourcePAT.id, ItemAttributeVarietyLookupId = _itemAttributeTermId }; } else { sourceWooAttributeTermMapsourceParentAttributeId.WooProductAttributeTermId = (int)sourcePAT.id; sourceWooAttributeTermMapsourceParentAttributeId.ItemAttributeVarietyLookupId = _itemAttributeTermId; } if (await _wooAttributeTermMapRepository.AddAsync(sourceWooAttributeTermMapsourceParentAttributeId) == AppUnitOfWork.CONST_WASERROR) { // did not add so set _ItemAttributeTermId to ItemAttributeTermID to Guid.Empty = error _itemAttributeTermId = Guid.Empty; } return(_itemAttributeTermId); }
async Task <Guid> ImportAndMapAttributeTermData(ProductAttributeTerm sourcePAT, Guid sourceParentAttributeId) { Guid _itemAttributeTermId = Guid.Empty; // Get repository for each database we are accessing. ItemAttributeTerm. WooProductAttributeTermMap & WooSyncLog IAppRepository <WooProductAttributeTermMap> _wooAttributeTermMapRepository = _AppUnitOfWork.Repository <WooProductAttributeTermMap>(); // Import the AttributeTerm and set sync data ///first check if it exists in the mapping, just in case there has been a name change WooProductAttributeTermMap _wooAttributeTermMap = await _wooAttributeTermMapRepository.FindFirstAsync(wa => wa.WooProductAttributeTermId == sourcePAT.id); if (_wooAttributeTermMap != null) // the id exists so update { _itemAttributeTermId = await UpdateProductAttributeTerm(sourcePAT, sourceParentAttributeId, _wooAttributeTermMap); currImportCounters.TotalUpdated++; } else // the id does not exists so add { _itemAttributeTermId = await AddProductAttributeTerm(sourcePAT, sourceParentAttributeId, _wooAttributeTermMap); currImportCounters.TotalAdded++; } return(_itemAttributeTermId); }
async Task <Guid> UpdateItemAttributeVariety(ProductAttributeTerm sourcePAT, Guid sourceParentAttributeId, ItemAttributeVarietyLookup currItemAttributeVariety) { IAppRepository <ItemAttributeVarietyLookup> _ItemAttributeVarietyRepository = _AppUnitOfWork.Repository <ItemAttributeVarietyLookup>(); bool _success = false; currItemAttributeVariety.ItemAttributeLookupId = sourceParentAttributeId; currItemAttributeVariety.VarietyName = sourcePAT.name; currItemAttributeVariety.Notes = $"Updated Woo AttributeTerm ID {sourcePAT.id}"; _success = await _ItemAttributeVarietyRepository.UpdateAsync(currItemAttributeVariety) != AppUnitOfWork.CONST_WASERROR; return(_success ? currItemAttributeVariety.ItemAttributeVarietyLookupId : Guid.Empty); }
private async Task <int> MapOurItemToWooItemSync(ProductAttributeTerm newWooProductAttributeTerm, ItemAttributeVarietyLookup addViewEntity) { // create a map to the woo AttributeVariety maps using the id and the AttributeVariety // IAppRepository <WooProductAttributeTermMap> _wooProductAttributeTermMapRepository = _AppUnitOfWork.Repository <WooProductAttributeTermMap>(); return(await _wooProductAttributeTermMapRepository.AddAsync(new WooProductAttributeTermMap { ItemAttributeVarietyLookupId = addViewEntity.ItemAttributeVarietyLookupId, WooProductAttributeTermId = Convert.ToInt32(newWooProductAttributeTerm.id), CanUpdate = true, })); }
async Task <Guid> UpdateProductAttributeTerm(ProductAttributeTerm sourcePAT, Guid sourceParentAttributeId, WooProductAttributeTermMap sourceWooAttributeTermMap) { // we have found a mapping between the woo Product AttributeTerm and our AttributeTerm id so update the Attribute table just in case. Guid _itemAttributeTermId = Guid.Empty; IAppRepository <WooProductAttributeTermMap> _wooProductAttributeTermMapRepository = _AppUnitOfWork.Repository <WooProductAttributeTermMap>(); _itemAttributeTermId = await AddOrUpdateItemAttributeVariety(sourcePAT, sourceParentAttributeId, sourceWooAttributeTermMap.ItemAttributeVarietyLookupId); /// Now update the woo AttributeTerm using the _ItemAttributeTermId returned. if (await _wooProductAttributeTermMapRepository.UpdateAsync(sourceWooAttributeTermMap) == AppUnitOfWork.CONST_WASERROR) { // did not updated so set _ItemAttributeTermId to ItemAttributeTermID to Guid.Empty = error _itemAttributeTermId = Guid.Empty; } return(_itemAttributeTermId); }
async Task <Guid> AddOrUpdateItemAttributeVariety(ProductAttributeTerm sourcePAT, Guid sourceParentAttributeId, Guid sourceWooMappedItemAttributeTermId) { Guid _itemAttributeVarietyId = Guid.Empty; IAppRepository <ItemAttributeVarietyLookup> _itemAttributeVarietyRepository = _AppUnitOfWork.Repository <ItemAttributeVarietyLookup>(); // check if the AttributeTerm exists ItemAttributeVarietyLookup _ItemAttributeVariety = await _itemAttributeVarietyRepository.FindFirstAsync(ic => ic.ItemAttributeVarietyLookupId == sourceWooMappedItemAttributeTermId); if (_ItemAttributeVariety != null) { _itemAttributeVarietyId = await UpdateItemAttributeVariety(sourcePAT, sourceParentAttributeId, _ItemAttributeVariety); } else { _itemAttributeVarietyId = await AddOrGetIDItemAttributeVariety(sourcePAT, sourceParentAttributeId); } return(_itemAttributeVarietyId); }
private async Task <ProductAttributeTerm> AddItemToWooOnlySync(ItemAttributeVarietyLookup addEntity) { IWooProductAttributeTerm _wooProductAttributeTermRepository = await GetIWooProductAttributeTerm(); if (_wooProductAttributeTermRepository == null) { return(null); } ProductAttributeTerm _wooProductAttributeTerm = new ProductAttributeTerm { name = addEntity.VarietyName, // order_by = ConvertToWooOrderBy(addEntity.OrderBy), }; int _parentAttributeId = await GetAttributeTermParentId(); return(await _wooProductAttributeTermRepository.AddProductAttributeTermAsync(_wooProductAttributeTerm, _parentAttributeId)); // should return a new version with ID }
public async Task <ProductAttributeTerm> GetProductAttributeTermByIdAsync(int sourceWooEntityId, int parentWooAttributeId) { RestAPI _RestAPI = _Woo.GetJSONRestAPI; ProductAttributeTerm _productAttributeTerm = null; try { WCObject _WC = new WCObject(_RestAPI); _productAttributeTerm = await _WC.Attribute.Terms.Get(sourceWooEntityId, parentWooAttributeId); } catch (Exception ex) { if (_Woo.Logger != null) { _Woo.Logger.LogError("Error calling WOO REST JSON API: " + ex.Message); } } return(_productAttributeTerm); }
public async Task <ProductAttributeTerm> UpdateProductAttributeTermAsync(ProductAttributeTerm updateWooProductAttribute, int parentWooAttributeId) { ProductAttributeTerm _ProductAttributeTerm = null; WCObject _WC = GetWCObject; try { // looks like it may need a force parameter, is this a good thing? _ProductAttributeTerm = await _WC.Attribute.Terms.Update((int)updateWooProductAttribute.id, updateWooProductAttribute, parentWooAttributeId); // force = true } catch (Exception ex) { if (_Woo.Logger != null) { _Woo.Logger.LogError($"Error calling deleting product category by id: {updateWooProductAttribute} Async. Error: {ex.Message}"); } } return(_ProductAttributeTerm); }
public async Task <ProductAttributeTerm> AddProductAttributeTermAsync(ProductAttributeTerm addWooProductAttribute, int parentWooAttributeId) { ProductAttributeTerm _ProductAttributeTerm = null; RestAPI _RestAPI = _Woo.GetJSONRestAPI; try { WCObject _WC = new(_RestAPI); _ProductAttributeTerm = await _WC.Attribute.Terms.Add(addWooProductAttribute, parentWooAttributeId); } catch (Exception ex) { if (_Woo.Logger != null) { _Woo.Logger.LogError($"Error calling Add ProductAttributeAsync for product: {addWooProductAttribute.name}. Error: {ex.Message}"); } } return(_ProductAttributeTerm); }
public override async Task <int> UpdateWooItemAsync(ItemAttributeVarietyLookupView updateViewEntity) { int _result = 0; /// null or not found if ((updateViewEntity.HasWooAttributeVarietyMap) && ((bool)(updateViewEntity.CanUpdateWooMap))) { IWooProductAttributeTerm _wooProductAttributeTermRepository = await GetIWooProductAttributeTerm(); if (_wooProductAttributeTermRepository != null) // - > if it does not exist then what? { WooProductAttributeTermMap _updateWooMapEntity = await GetWooProductAttributeTermMapFromID(updateViewEntity.ItemAttributeVarietyLookupId); if (_updateWooMapEntity == null) { // need to add the AttributeVariety -> this is done later. _result = await AddWooItemAndMapAsync(updateViewEntity); } else { int _parentAttributeId = await GetAttributeTermParentId(); ProductAttributeTerm _wooProductAttributeTerm = await _wooProductAttributeTermRepository.GetProductAttributeTermByIdAsync(_updateWooMapEntity.WooProductAttributeTermId, _parentAttributeId); if (_wooProductAttributeTerm == null) { return(AppUnitOfWork.CONST_WASERROR); /// oops what happened >? } else { // only update if different if (!_wooProductAttributeTerm.name.Equals(updateViewEntity.VarietyName)) //|| (!_wooProductAttributeTerm.order_by.Equals(updateViewEntity.OrderBy.ToString(), StringComparison.OrdinalIgnoreCase))) { _wooProductAttributeTerm.name = updateViewEntity.VarietyName; // only update if necessary //_wooProductAttributeTerm.order_by = ConvertToWooOrderBy(updateViewEntity.OrderBy); var _res = ((await _wooProductAttributeTermRepository.UpdateProductAttributeTermAsync(_wooProductAttributeTerm, _parentAttributeId))); _result = ((_res == null) || (_res.id == null)) ? AppUnitOfWork.CONST_WASERROR : (int)_res.id; // if null there is an issue } } } } } return(_result); }
//private async Task<ProductAttributeVariety> GetWooProductAttributeTermByName(string VarietyName) //{ // IWooProductAttributeTerm _wooProductAttributeTermRepository = await GetIWooProductAttributeTerm(); // if (_wooProductAttributeTermRepository == null) // return null; // return _wooProductAttributeTermRepository.FindProductAttributeVarietyByName(VarietyName); //} /// <summary> /// Add the item to woo /// </summary> /// <param name="addEntity"></param> /// <returns></returns> public override async Task <int> AddWooItemAndMapAsync(ItemAttributeVarietyLookup addEntity) { // check it the item exists in woo !!!!!!(we did not do this as there is no such call;, if so get is id and return, otherwise add it and get its id //ProductAttributeVariety _wooProductAttributeTerm = await GetWooProductAttributeTermByName(addEntity.VarietyName); //if (_wooProductAttributeTerm == null) //{ ProductAttributeTerm _wooProductAttributeTerm = await AddItemToWooOnlySync(addEntity); if (_wooProductAttributeTerm == null) { return(AppUnitOfWork.CONST_WASERROR); } return(await MapOurItemToWooItemSync(_wooProductAttributeTerm, addEntity)); //} //else // return AppUnitOfWork.CONST_WASERROR; }
// check if the a product if the name product.name exists if so get that ID (and update), or add it and return the id. async Task <Guid> AddOrGetIDItemAttributeVariety(ProductAttributeTerm sourcePAT, Guid sourceParentAttributeId) { IAppRepository <ItemAttributeVarietyLookup> _itemAttributeVarietyRepository = _AppUnitOfWork.Repository <ItemAttributeVarietyLookup>(); ItemAttributeVarietyLookup _ItemAttributeVariety = await _itemAttributeVarietyRepository.FindFirstAsync(ic => ic.VarietyName == sourcePAT.name); if (_ItemAttributeVariety == null) { ItemAttributeVarietyLookup _newItemAttributeVariety = new ItemAttributeVarietyLookup { ItemAttributeLookupId = sourceParentAttributeId, VarietyName = sourcePAT.name, Notes = $"Imported Woo Attribute Term ID {sourcePAT.id}" }; int _recsAdded = await _itemAttributeVarietyRepository.AddAsync(_newItemAttributeVariety); return((_recsAdded != AppUnitOfWork.CONST_WASERROR) ? _newItemAttributeVariety.ItemAttributeVarietyLookupId : Guid.Empty); } else { return(_ItemAttributeVariety.ItemAttributeVarietyLookupId); // we found one with the same name so assume this is the correct one. } }
string ProductAttributeTermToString(ProductAttributeTerm sourcePAT, Guid sourceImportedId) { return($"Product Attribute Term {sourcePAT.name}, id: {sourcePAT.id}, imported and Attribute Id is {sourceImportedId}"); }