Designbest Core Sviluppo: differenze tra le versioni

Da Webmobili Wiki.
Riga 131: Riga 131:
* '''ShopNet Estero''' - Tutti gli ShopPoint Esteri. Hanno <code>Piva = '000000000004'</code>. Ne viene creata una per ognuno.
* '''ShopNet Estero''' - Tutti gli ShopPoint Esteri. Hanno <code>Piva = '000000000004'</code>. Ne viene creata una per ognuno.
* '''ShopNet Anagrafiche''' - Contiene tutti gli ShopPoint di tipo != 0 che sono anagrafiche. Un padre per molti figli.
* '''ShopNet Anagrafiche''' - Contiene tutti gli ShopPoint di tipo != 0 che sono anagrafiche. Un padre per molti figli.


==== ShopFulltextAdditions ====
==== ShopFulltextAdditions ====
Gestione della ricerca '''full-text dei negozi''' che aggiunge ambienti, tipologie e produttori alle chiavi di ricerca del singolo negozio.<br/>
Gestione della ricerca '''full-text dei negozi''' che aggiunge ambienti, tipologie e produttori alle chiavi di ricerca del singolo negozio.<br/>
Sarà necessario reimplementare tutto il passaggio con il task notturno che genera le righe?
Sarà necessario reimplementare tutto il passaggio con il task notturno che genera le righe?


=== Pictures ===
=== Pictures ===

Versione delle 17:06, 28 mar 2022

Goal

Realizzare una versione agile e super performante di Designbest usando le ultime tecnologie Microsoft disponibili (.NET Core 6).

Database

Accorpamento database:

  • Designbest
  • Trovaprodotti

Tabelle

  • Language
  • LocalizedProperty
  • Category

  • ManufacturerContractType
  • Manufacturer
  • Product
  • ProductCulture
  • ProductBargain
  • ProductBargainCulture

  • ProductProperty
  • ProductPropertyValue
  • Mapping_Category_ProductProperty
  • Mapping_Product_ProductPropertyValue
  • ShopPointProperty
  • ShopPointPropertyValue
  • Mapping_ShopPoint_ShopPointPropertyValue

  • Agent
  • ShopNetStatus
  • ShopNet
  • ShopPointVisibilityType
  • ShopPoint
  • Trovaprodotti
  • TrovaprodottiCulture
  • Region
  • Province
  • City

  • Picture

Popolamento Region/Province/City

Attualmente abbiamo importato i dati sporchi così come sono con la seguente query

INSERT INTO DesignbestCore.dbo.Region
SELECT Region.ID,
	CASE
		WHEN Region.CountryID = 3 THEN 1
		WHEN Region.CountryID = 2 THEN 3
		WHEN Region.CountryID = 4 THEN 4
		WHEN Region.CountryID = 1000 THEN 2
	END AS LanguageID,
	Region.Coordinates,
	Region.LocalizerCode,
	RegionCulture.Region AS [Name],
	LOWER(RegionCulture.SEORegion) AS SeoName
FROM Region
	INNER JOIN RegionCulture ON Region.ID = RegionCulture.RegionID


INSERT INTO DesignbestCore.dbo.Province
SELECT Province.ID,
	CASE
		WHEN Province.CountryID = 3 THEN 1
		WHEN Province.CountryID = 2 THEN 3
		WHEN Province.CountryID = 4 THEN 4
		WHEN Province.CountryID = 1000 THEN 2
	END AS LocalizationID,
	Province.Coordinates,
	Province.ProvinceCode,
	Province.RegionID,
	ProvinceCulture.Province AS Name,
	LOWER(ProvinceCulture.SEOProvince) AS SeoName
FROM Province
	INNER JOIN ProvinceCulture ON Province.ID = ProvinceCulture.ProvinceID
	INNER JOIN Region ON Province.RegionID = Region.ID

INSERT INTO DesignbestCore.dbo.City
SELECT City.ID,
	CASE
		WHEN City.CountryID = 3 THEN 1
		WHEN City.CountryID = 2 THEN 3
		WHEN City.CountryID = 4 THEN 4
		WHEN City.CountryID = 1000 THEN 2
	END AS LocalizationID,
	City.ProvinceID,
	City.City AS [Name],
	LOWER(City.SeoCity) AS SeoName
FROM City
	INNER JOIN Province ON Province.ID = City.ProvinceID
	INNER JOIN Region ON Province.RegionID = Region.ID

Custom Properties

L'idea è quella di creare da una semplicissima struttura di tabelle

  • ProductProperty
  • ProductPropertyValue
  • Mapping_Category_ProductProperty
  • Mapping_Product_ProductPropertyValue

l'assegnazione di qualsiasi proprietà (stile, finitura, colori, decori, formati, proprietà di tipologia, designer, campi custom)

Per ognuna di queste custom property è possibile specificare

  • Nome
  • Nome SEO
  • Valore
  • Immagine (opzionale, gestita da Pictures)


Stesso concetto su tabelle separate per gli ShopPoint

  • ShopPointProperty
  • ShopPointPropertyValue
  • Mapping_ShopPoint_ShopPointPropertyValue

assegnazione delle proprietà come gli ShopPointServices

Per quanto riguarda gli ShopPointServices, purtroppo abbiamo ereditato una logica per la quale, se esiste il valore PropertyValue nel mapping, allora il negozio possiede quella Property. Di conseguenza, se il negozio possiede una certa Property e non specifica nessun suo valore, è necessario inserire un PropertyValue vuoto.

Tabelle escluse

Di seguito le tabelle che non riteniamo più utili:

  • ShopManufacturerException
  • ShopContentExtra

Shop

ShopNet Casi Particolari

Tutti i negozi ora appartengono obbligatoriamente ad una ShopNet Queste ShopNet in particolare:

  • ShopNet Trovaprodotti Orfani Tutti i Trovaprodotti che non avevano una ShopNet. Hanno Piva = '000000000000'. Ne viene creata una per ognuno.
  • ShopNet Estero - Tutti gli ShopPoint Esteri. Hanno Piva = '000000000004'. Ne viene creata una per ognuno.
  • ShopNet Anagrafiche - Contiene tutti gli ShopPoint di tipo != 0 che sono anagrafiche. Un padre per molti figli.

ShopFulltextAdditions

Gestione della ricerca full-text dei negozi che aggiunge ambienti, tipologie e produttori alle chiavi di ricerca del singolo negozio.
Sarà necessario reimplementare tutto il passaggio con il task notturno che genera le righe?

Pictures

La gestione delle immagini sarà basata su quella di Nop.
Tutte le immagini saranno in un unico folder

product-<ProductID>-<Sort>.jpg
bargain-<ProductID>-<Sort>.jpg

Questa soluzione è meno leggibile dall'umano ma molto più elastica nel caso in cui ci siano diversi cambiamenti di ordine, master/alternative (evita di dover rinominare l'immagine su disco).