1 Features 1.1 Plan 1.1.1 Szereplők 1.1.2 Áttekintés 1.1.3 Plan rendelés: PlanManageController 1.1.4 Purchase 1.1.5 Usage - felhasznált mennyiségek 1.1.6 PlanFeatures 1.10 Similars 1.10.1 Szereplők 1.10.2 Működés 1.10.3 SolR használat 1.11 Specification 1.11.1 Szereplők 1.12 Massimport 1.13 Faq 1.13.1 Szereplők 1.13.2 Működés 1.13.3 FaqMail 1.14 Gifting 1.2 BazarItemRepost 1.2.1 Elemei 1.3 Parkoló, előzmények 1.3.1 Brainstorming 1.4 Streetview 1.4.1 Onsite SEO 1.4.2 Szereplők 1.5 ContextAd 1.6 CtrCounter 1.7 KuponCode 1.8 Recommendation Engine 1.8.1 Generátorok 1.9 Approving 1.9.1 ApprovingStatus 1.9.2 ApprovingQuery 1.9.3 ApprovingAction, Attach, Apply 1.9.4 Service
RacingNet.GeneralBazar 1 Features 1.1 Plan A plan-ek a fizetős szolgáltatásokat, fizetősen igénybe vehető lehetőségeket foglalják össze
1.1.1 Szereplők Plan RacingNet.GeneralBazar.Features.Plans.Plan Type Egy, a hirdető által igénybe vett szolgáltatáscsomagot reprezentál Minden Memberhez pontosan egy Plan van hozzárendelve Az új Memberekhez a Default Plan kerül hozzárendelésre
Minden member minden pillanatban egy plan-ban van
1.1.2 Áttekintés
- Minden hirdetőnek van pontosan egy plan-ja. - Az alapértelmezett plan innen jön: GBApp.DP.PlanDP.DefaultPlan Egy plan valójában PlanFeatureFactory-k halmaza. A PlanFeatureFactory megmondja, hogy egy adott PlanFeature egy adott Plan-ban milyen költséggel vehető igénybe. A PlanFeature és a PlanFeatureFactory absztrakt osztályok. Minden konkrét szolgáltatást egy PlanFeature leszármazott valósít meg, amelyhez minden esetben tartozik egy PlanFeatureFactory leszármazott. PlanFeatureFactory RacingNet.GeneralBazar.Features.Plans.PlanFeatureFactory Type Meghatározza, hogy az adott Plan-hoz mely PlanFeature-k milyen költséggel vehetők igénybe Minden PlanFeature-hoz tartozik egy PlanFeatureFactory
A PlanFeatureUnit az egy konkrét, igénybe vett fizetős szolgáltatás, jellemzően minden objektum példányhoz tartozik egy fizetési tranzakció. Hogy ez mit csinál, az általában egyedileg van leprogramozva PlanFeatureUnit RacingNet.GeneralBazar.Features.Plans.PlanFeatureUnit Namespace
PlanFeatureUnit-okat BazarItem-hez, vagy Member-hez lehet csatolni. Azt, hogy ugyanazon PlanFeatureUnit-ból lehet-e egy alanyhoz egyszerre többet csatolni, a PileUpKind property mondja meg: - None: nem leht - AmountExtendable: lehet, egyszerűen a mennyiség nő (pl. HD kép feltöltés) - DateExtendable: lehet, az újabb PlanFeature-ek időben kitolják egymást (pl hirdetés kiemelés 10 napra )
1.1.3 Plan rendelés: PlanManageController A Plan rendelés, módosítás a PlanManageController-ben kapott helyet. Tartozik hozzá egy persisted model: PlanOrder PlanOrder RacingNet.GeneralBazar.Features.Plans.PlanOrder Type A Plan rendelés modelje. A memberhez van eltárolva, de UI modelként viselkedik
A rendelés folyamata: 1, Létrejön a PlanOrder Ez akkor történik meg, mikor a PlanMatrix-ban nyomnak egy jót az Ezt Választom gombon Order_createNew RacingNet.GeneralBazar.Features.Plans.PlanEvents.Order_createNew Method Ezt kell meghívni, mikor valaki új csomag igénylésébe kezd System.Int64
2, Nyomkodja az user a megrendeléssel kapcsolatos opciókat (díjfizetés gyakoriság, fizetési mód, ilyesmik...) Ilyenkor mindig lefut az Order_calculate, hogy a megjelenített infókat újraszámolja Order_calculate RacingNet.GeneralBazar.Features.Plans.PlanEvents.Order_calculate Method
A megadott order számítható értékei számítja ki (pl. fizetendő összeg) RacingNet.GeneralBazar.Features.Plans.PlanOrder
3, Véglegesedik az Order (Place) Az user rányomott a véglegesítő gombra. Ekkor jön létre a megrendeléshez szükséges fizetési objektum (Purchase) Order_place RacingNet.GeneralBazar.Features.Plans.PlanEvents.Order_place Method A member véglegesíti az ordert. Ekkor jön létre a Purchase objektum RacingNet.GeneralBazar.Features.Plans.PlanOrder
4, Fizetés folyamata. A Pay_start elindítja a kiválasztott fizetési módhoz tartozó fizetést. Ha át kell ugrani, akkor visszaad egy url-t. Pay_start RacingNet.GeneralBazar.Features.Plans.PurchaseEngine.Pay_start Method Fizetés inditása Egyrész, elindíta a fizetést a pay module segítségével, másrész pedig a UI-t is meghatározza RacingNet.GeneralBazar.Features.Plans.Purchase, RacingNet.GeneralBazar.Features.Plans.PurchasePaymode
5, Finish Vagy a fizetés képernyőről ugrott ide, vagy közvetlen az előzőről. Megjelenít információkat a fizetési tranzakcióval kapcsolatban, illetve a rendelés állapotával kapcsolatban. A Rendelést az Order_finish zárja le, ez határozza meg az itt megjelenítendő szövegeket. apply...
1.1.4 Purchase A Purchase reprezentál egy számlázási tételt. Az esetek többségében egy számlára egy számlázási tétel kerül
1.1.4.1 Life and death Minden esetben a PurchaseEngine.Purchase_add függvénnyel jön létre: Purchase_add RacingNet.GeneralBazar.Features.Plans.PurchaseEngine.Purchase_add Method Létrehoz egy új purchase-t System.Int64, System.String, RacingNet.Modules.Pay.Currency.Price, RacingNet.GeneralBazar.Features.Plans.PurchasePaymode, System.Boolean, System.Nullable{System.Int64}
- A Purchase_add-hoz a text-et és price-t a hívó oldal adja meg A tényleges fizetési tranzakciót (pénzlevonást) a PayStart függvény indítja el: Pay_start RacingNet.GeneralBazar.Features.Plans.PurchaseEngine.Pay_start Method Fizetés inditása (TÉNYLEGES fizetési folyamat) Egyrész, elindíta a fizetést a pay module segítségével, másrész pedig a UI-t is meghatározza RacingNet.GeneralBazar.Features.Plans.Purchase, RacingNet.GeneralBazar.Features.Plans.PurchasePaymode, System.String, System.String
Ez elindítja a fizetési mechanizmust, másrészt visszatér vagy egy megjelenítendő string-el, vagy pedig egy redirect-etl (pl a bankkártyás fizetés oldalra) Miután bármilyen módon megtörtént a fizetés, az OnPaid függvény hívódik meg
Paid RacingNet.GeneralBazar.Features.Plans.PurchaseEngine.Paid Method Ez akkor fut le, ha megtörtént a kifizetés RacingNet.GeneralBazar.Features.Plans.Purchase
A különböző entitások kifizetéséhez ennek al-függvényei vannak: Paid_planOrder RacingNet.GeneralBazar.Features.Plans.PurchaseEngine.Paid_planOrder Method Plan megrendelésének kifizetése esetén fut le. RacingNet.GeneralBazar.Features.Plans.Purchase, RacingNet.GeneralBazar.Features.Plans.PlanOrder
1.1.4.2 Számlázás Számla bármikor létrehozható egy vagy több purchase-hez: Szamla_create A számlák pdf-jeit össze lehet merge-lni, hogy egyszerűbb legyen kinyomtatni: Szamla_merge A számlázandó purchase-k listáját a Purchase_getBillCreateList függvény generálja. Ez elvégzi a csoportosítást is (egy számlára több Purchase is kerülhet), amelyet az admin felületen felül lehet bírálni. Purchase_getBillCreateList RacingNet.GeneralBazar.Features.Plans.PurchaseEngine.Purchase_getBillCreateList Method Az adatbázisból listázza azoknak a Purchase-eknek a listáját, amelyekhez számlát kell készíteni Elvégzi a csoportosítást is
Csoportosítás: Purchases_process RacingNet.GeneralBazar.Features.Plans.PurchaseEngine.Purchases_process Method Purchasekből létrehozza a PurchaseCollectionöket MemberId szerint van csoportosítva System.Collections.Generic.List{RacingNet.GeneralBazar.Features.Plans.Purchase}
A számlagenerálásr váró purchase-k validálást ez végzi el: Purchases_getError RacingNet.GeneralBazar.Features.Plans.PurchaseEngine.Purchases_getError Method Ellenörzi, hogy jelen állás szerint elkészíthető-e a megadott dokumentum- ha a visszatérési érték egy string, akkor az a hibaüzenetet jelenti - ha a visszatérési érték null, akkor nincs hiba RacingNet.GeneralBazar.Features.Plans.PurchaseCollection
1.1.5 Usage - felhasznált mennyiségek A Plan-ek tartalmazhatnak a plan árában foglalt ingyenes mennyiségeket, illetve egyébként is szükség lehet member-szinten eltárolni a PlanFeature-ök használatával kapcsolatos információkat. Ezeknek a helye a Member.PlanFeatureUsages PlanFeatureUsageCollection RacingNet.GeneralBazar.Features.Plans.Entities.PlanFeatureUsageCollection
Type Ez az osztály tárolja el a PlanFeature-ök felhasználását memberenként Minden PlanFeature minden cucca be van égetve
Ide kulcs-érték párosok kerülnek, amelyek kezeléséről a PlanFeautureFactory-k gondoskodnak, az alábbi fügvényekkel: Usage_get RacingNet.GeneralBazar.Features.Plans.PFFListaFolottiKiemeles.Usage_get Method Visszaadja a pillanatnyilag érvényes Usage objektumot System.Int64
Usage_reset RacingNet.GeneralBazar.Features.Plans.PFFListaFolottiKiemeles.Usage_reset Method Reseteli, inicializálja a megadott memberhez tartozó Usage-t, és el is menti a memberhez, meg majd jól visszaadja Ez a függvény használható önállóan is (Ide kerülhetnek majd a régebbi cuccok gyomlálása is) System.Int64
Usage_increment RacingNet.GeneralBazar.Features.Plans.PFFListaFolottiKiemeles.Usage_increment Method Inkrementálja az ingyenes használatot, majd rögtön el is menti nincs paraméter RacingNet.GeneralBazar.Entities.Member, System.Object[]
Usage_decrement RacingNet.GeneralBazar.Features.Plans.PFFListaFolottiKiemeles.Usage_decrement Method Dekrementálja az ingyenes használatot, majd rögtön el is menti nincs paraméter RacingNet.GeneralBazar.Entities.Member, System.Object[]
UsageString_forMember RacingNet.GeneralBazar.Features.Plans.PFFListaFolottiKiemeles.UsageString_forMember Method Ez lesz megjelenítve a publikus adminon. Formája: tábla sorok RacingNet.GeneralBazar.Entities.Member
Az UsageString_forMember függvény generálja a Vezérlőpulton megjelenített információkat a szolgáltatások használatával kapcsolatban
1.1.6 PlanFeatures 1.1.6.1 PfAdTotalLimit Feladata: a Member feladott hirdetéseinek korlátozása. Akinek a Planjében szerepel az nem adhat fel több hirdetést mint a meghatározott limit. Ez nem vonatkozik a tömegesen feltöltött hirdetésekre. Amennyiben eléri a limitben megadott hirdetések számának a 90%-át, hirdetésfeladáskor tájékoztató üzenetet kap erről. PFFAdTotalLimit RacingNet.GeneralBazar.Features.Plans.PFFAdTotalLimit Type Feladott hirdetések számának korlátozása
Hirdetésfeladáskor és hirdetésújrafeladáskor a GetAvailable() függvény segítségével ellenőrizzük, hogy hányat adhat még
fel. Itt tesszük rá az AdTotalLimitReached flaget ha elérte a limitet. Erről Syslog is létrejön. Dashboard Statba ezt beírjuk. GetAvailable RacingNet.GeneralBazar.Features.Plans.PFFAdTotalLimit.GetAvailable Method Megmondja, hogy hány hirdetést adhat még fel a Member RacingNet.GeneralBazar.Entities.Member
Hirdetésfeladáskor a GetUsagePercentage() mondja meg, hogy a limit hány százalékánál jár a Member. GetUsagePercentage RacingNet.GeneralBazar.Features.Plans.PFFAdTotalLimit.GetUsagePercentage Method Visszaadja, hogy a felhasználható mennyiségnek hány százalékát használta már el a Member System.Int64
UsageString_forMember() függvény segítségével jelenítjük meg a számokat a Membernek. UsageString_forMember RacingNet.GeneralBazar.Features.Plans.PFFAdTotalLimit.UsageString_forMember Method Ez lesz megjelenítve a publikus adminon. Formája: tábla sorok RacingNet.GeneralBazar.Entities.Member
Hirdetések száma (Feladott, Összes, Élő): GetCountByMember_Added RacingNet.GeneralBazar.Engines.BazarItemEngine.GetCountByMember_Added Method Feladott: Feladott, nemtörölt hirdetések System.Int64 GetCountByMember_All RacingNet.GeneralBazar.Engines.BazarItemEngine.GetCountByMember_All Method Összes hirdetés: Összes hirdetés (feladott, massimportos, törölt) System.Int64 GetCountByMember_Live RacingNet.GeneralBazar.Engines.BazarItemEngine.GetCountByMember_Live Method Élő hirdetések: feladott + massimportos, nemtörölt hirdetések System.Int64
1.1.6.2 PFAjanlatkeres Lehetőséget adunk bármely látogatónak, hogy konkrét alkatrészre ajánlatot kérhessen Partnereinktől. A bejelentkezett felhasználók a /vezerlopult/ajanlatkereseim oldalon láthatják a kiküldött ajánlatkéréseiket. A listában feltüntetjük, hogy hány Partnerünk kapta meg. A Partnerek a /vezerlopult/ajanlatkeres/beallitasok oldalon tudják megadni: - akarnak-e ajánlatkéréseket kapni - milyen autótípus ajánlatkéréseit (Facetek) szeretnék megkapni - kér-e erről emailben értesítést és ha igen, milyen gyakorisággal Ezeket a beállításokat külön kollekcióban (AjanlatkeresMemberConfig) tároljuk. AjanlatkeresMemberConfig RacingNet.GeneralBazar.Features.Plans.PlanFeatures.PFAjanlatkeres.AjanlatkeresMemberConfig Namespace
Ajanlatkeres_TimedTask:
- 10 percenként meghívja a Service - feladata: ajánlatkérések szétosztása, emailek kiküldése, purgálás Ajanlatkeres_PropagateAll RacingNet.GeneralBazar.Features.Plans.PlanFeatures.PFAjanlatkeres.AjanlatkeresEngine.Ajanlatkeres_PropagateAll Method Végigmegy a még ki nemküldött Ajanlatkereseken és kiküldi a megfelelő Membereknek. System.Collections.Generic.List{RacingNet.GeneralBazar.Entities.Member} Ajanlatkeres_SendNotifications RacingNet.GeneralBazar.Features.Plans.PlanFeatures.PFAjanlatkeres.AjanlatkeresEngine.Ajanlatkeres_SendNotifications Method Végigmegy az AjanlatkeresKapva-kon és kiküldi a megfelelő emaileket System.Collections.Generic.List{RacingNet.GeneralBazar.Entities.Member} Ajanlatkeres_Purge RacingNet.GeneralBazar.Features.Plans.PlanFeatures.PFAjanlatkeres.AjanlatkeresEngine.Ajanlatkeres_Purge Method Törli az 1 napnál régebbi, IsPending Ajanlatkereseket
A Partnerek a /vezerlopult/ajanlatkeresek/bejovo oldalon láthatják a hozzájuk beérkezett ajánlatkéréseket.
1.10 Similars A hasonlóság-listák generálásért és tárolásáért felelős osztályok
1.10.1 Szereplők SimilarEngine RacingNet.GeneralBazar.Features.Similars.SimilarEngine Namespace
FilteredListGeneratorBase RacingNet.GeneralBazar.Features.Similars.FilteredListGeneratorBase Type A Solr hasonlóság generátoroknak az őse, ebből kell származtatni valamennyit
SimilarsModel RacingNet.GeneralBazar.Features.Similars.SimilarsModel Type A hasonlóság-listák megjelenésének alapját képezi Tárolja a generátorokat, és néhányhoz a legenerált listát is
1.10.2 Működés A hasonló elemeket Solr lekérdezésekker gyüjtjük össze, leginkább a facetek alapján Kétfajta lista van: SimilarList: Általános hasonló elemek listája, indul egy nagyon szigorú SolR queryvel, majd lefuttatja többször, egyre lazítva a feltételetek. A cspásirányt a facet prioritásokkal lehet befolyáslni FilteredList: Több, előre kitalált sablon szerint (Pl. Honda CRX használtautók Debrecenben) futtat le lekérdezéseket.
1.10.3 SolR használat
A SolR-ben a Hasonlóság listázás az spc és az spcb mezők alapján történik. Ez a facet és tagword id-k listája tehát gyakorlatilag a FacetCollection szöveges lekérdezése. Azért van stringként, így eltárolva, hogy felhasználhasuk a SolR score-ját. spc a normál, spcb a boosted mező Ezekben a Similar handlerrel lehet keresni
1.11 Specification A Specification az az objektum, amely tartalmazza az adott entitás nevesíthető paramétereinek értékeit. Célja, hogy ezeket meg lehessen adni, fel lehessen használni szűréshez, kereséshez, illetve szövegesen meg lehessen jeleníteni.
1.11.1 Szereplők SpecProperty Egy tulajdonság, amelyet egyes entitásokhoz hozzá lehet rendelni. Ilyen pl: felniátmérő, autótípus, kategória, stb. Ezeknek kódba beégetett ID-ja van, illetve a SpecificationProperties táblában vannak hozzá további adatok tárolva. SpecValue A SpecProperty-k lehetséges értékei. SpecPropertyContent Egy konkrét entitás esetében egy SpecProperty aktuális értéke. Ez lehet string, vagy SpecValue, illetve mindkét esetben lehet több érték is (string vagy SpecValue lista) Specification Egy konkrét entitáshoz rendelt SpecProperty értékek halmaza
1.12 Massimport A Massimport feladata külső adatforrások feldolgozása, és hirdetésekként való beintegrálása
1.13 Faq A Faq egy súgó rendszer, mely főbb részei a következők: - Faq aloldal: statikus, csoportokba szedett kérdés-válasz gyüjtemény - Faq levelek: kontextusfüggően kiküldött levelek
1.13.1 Szereplők FaqPost: faq a weben FaqMail: levélben elküldött faq tartalom - tarolja hogy melyik FaqEvent-hez van kotve - tarolja hogy melyik FaqFlag-hez van kotve FaqEvent: class: FaqMailId, TimedFaqEvents: Dict member élete során bekövetkező események listája FaqEngine.Init hozza letre a peldanyokat, a propertyk itt be vannak egetve MemberFaqEvents: kollekció, memberhez rendelt FaqEvent-ek (mi, mikor következett be, mikor kell elküldeni, mikor lett elküldve) FaqFlag RacingNet.GeneralBazar.Features.Faq.Entities.FaqFlag
Type A FaqFlag-okat a moderátorok osztják, ezzel lehet a hirdetéseket bizonyos szempontok alapján megjelölni (pl. hibás, stb...)
MemberFaqFlags: kollekció, membernek ELKÜLDÖTT faqmailok BazarItemFaqFlags: moderátor által BazarItemhez rendelt FaqFlag-ek (mi, mikor) (hirdetés módosításkor törlődik)
1.13.2 Működés FaqEngine.EnsureFaqEvent(event, member) Ha nincs a membernek még olyan eventje, akkor hozzáadja és kiküldi a levelet FaqEngine.AggregateFaqFlags() Service fogja futtatni, összeszedni miket kell kiküldeni, és hozzáadja a mebmerhez, kiküldi - MemberFlaqFlags: csak n hónapra tároljuk (6) - Egy FaqMail-t max. havonta egyszer kap meg - Hetente csak 1 FaqMailt kap - Csak az 1 hónapnál nem régebbi BazarItemeket vesszük figyelembe (CreatedAt) FaqEngine.SendFaqMail() Elküldi a levelet a MongoWM.QueueSentMail használatával FaqEngine.SendTimedEvents() Elkuldi az idozitett FaqEventes mailokat
1.13.3 FaqMail Tokenek: - ##BazarItemList#
1.14 Gifting Ajándék-sorsolás, bizonyos tevékenységes esetén (hirdetésfeladás, futárrendelés, ilyesmi) ajándékot sorosolunk ki. Egy giftingnek van eleje, vége, illetve eltároljuk hogy mikor van a sorsolás. Gifting lehet automatikus, vagy checkox-al jelentkezni kellhet rá.
1.2 BazarItemRepost Lehetőség van a már lejárt, és/vagy törölt hirdetés újrafeladására. Ekkor a hirdetés dátuma a következő módon számítódik: - Ha az eredeti hirdetés már lejárt, akkor a Reposted dátuma a lejárat dátuma lesz, az új lejárat dátuma pedig rendesen számítódik - Ha a hirdetést törölt, de még nem járt le (tehát kézzel törölték), akkor hirdetés dátuma nem változik, a lejárat dátuma viszont kitolódik. Repost-nál figyelni kell a title-t is, ez ugye megváltozhat, ekkor hozzácsapjuk majd az id-t is. Figyelni kell az egy member által elsütött repostok számát is, ezt lehet hogy majd korlátozni kell
1.2.1 Elemei - Repost tényleges végrehajtása: BazarItemEngine.Repost - Hirdetéskezelő: Repost gomb a törölteknél - Repostolások eltárolása, szűrése (Most a BazarItem.Reposts prop (reports), később majd a history) - Repost link az Expired mailban - Repost link kattintás utáni képernyő (SiteControllerBase) - FAQ bejegyzés, facebook kampány
1.3 Parkoló, előzmények SavedEngine RacingNet.GeneralBazar.Engines.SavedEngine Type Parkoló és Előzmények kezelése ============================== Eltároljuk a Memberek és a nemregisztrált felhasználók előzményeit és parkolóhoz adott itemjeit. Bejelentkezéskor Mergeljük. Éjjelente Purgáljuk. ------------------------------ Add: BazarItemből SavedItemet hozunk létre és eltároljuk. Duplázódás nem jön létre a Unique index miatt MergeSavedItems: bejelentkezéskor Mergeli a Guest és Member SavedItemjeit PurgeAll: Service hívja meg éjszaka, törli amiket kell RenderParkoloAddOrRemoveLink: kirenderel egy Parkolóhoz adás gombot vagy linket SavedItem RacingNet.GeneralBazar.Entities.Saved.SavedItem Type Egy Parkoló/Előzmény itemet reprezentál.
Célja: megtekintett hirdetések eltárolása előzményekhez vagy opcionálisan a parkolóba. Nem szükséges bejelentkezni a használatához (ebben az esetben GuestId alapján tároljuk) Bejelentkezéskor mergeljük a kijelentkezve megtekintett hirdetéseket a bejelentkezett Memberhez. Index: MemberId, GuestId, ListId, BazarItemRef.Id (Unique, így elkerüljük a duplázódást) Purgálás: PurgeAll RacingNet.GeneralBazar.Entities.Saved.SavedItemDataProvider.PurgeAll Method Service hívja meg éjszaka 1.: Azoknak a Membereknek/Guesteknek a SavedItemjeinek a törlése ahol a Historyban több van mint a megengedett 2.: Azoknak a Membereknek/Guesteknek a SavedItemjeinek a törlése ahol a Member-nek 1 évnél régebbi a legutóbbi SavedItem, a Guestnek pedig 1 hónapnál régebbi
1.3.1 Brainstorming - Parkoló, előzmények lista: ugyanaz a motor jelenítse meg, különbségek azért lehetnek köztük - Parkolóhoz hozzáadásnál lehetne valami animálni - működjön kijelentkezett usernél is. Ha ez bejelentkezik, akkor mergelje össze őket - Parkoló: térképen is jelenítsük meg. Lehessen körüljárási útvonalat készíteni (waypoint) - Listát lehessen rendezni - lehessen jegyzetelni minden hirdetéshez (úgy, hogy az majd minden hirdetés listánál működjön) - details oldal: parkolóba adásnál "kinylik" a parkoló jelenlegi tartalma, oly módon mint most a képnézegető - listában a törölt hirdetések is jelenjenek meg, töröltként megjelölve
1.4 Streetview A Streetviewen található autók összegyüjtése. Egy StreetviewCar reprezentál egy Streetview nézetet, a Facets tulajdonságon keresztül válik böngészhetővé
1.4.1 Onsite SEO Finds A Finds listában legfelül megjelenítünk egy linket, amennyiben van típursra történő szűrés
1.4.2 Szereplők StreetviewCar RacingNet.GeneralBazar.Features.Streetview.StreetviewCar Type Egy Streetview oldlaon megjelenített autó reprezentál StreetviewCarEngine RacingNet.GeneralBazar.Features.Streetview.StreetviewCarEngine
Namespace StreetviewCarDataProvider RacingNet.GeneralBazar.Features.Streetview.StreetviewCarDataProvider Namespace StreetviewCarRoute RacingNet.GeneralBazar.Features.Streetview.StreetviewCarRoute Type Streetview listához tartozo Route StreetviewCarUrlModel RacingNet.GeneralBazar.Features.Streetview.StreetviewCarUrlModel Type A Streetview listához tartozó Url model StreetviewCar_ControllerBase RacingNet.GeneralBazar.Features.Streetview.StreetviewCar_ControllerBase Namespace StreetviewCar_ModelCreators RacingNet.GeneralBazar.Features.Streetview.StreetviewCar_ModelCreators Namespace
1.5 ContextAd A ContextAd Google AdSense-szerű reklámot jelent, amely egy Facet collection alapján, hasonlóságtól függően jelenik meg itt-ott ContextAd RacingNet.GeneralBazar.Features.ContextAds.ContextAd Type Egy ContextAd, amely Google AdSense szerű megjelenéssel rendelkezik A Facets alapján dől el, hogy melyik felületen melyik jelenik meg.
1.6 CtrCounter A CtrCounter feladata valamennyi elem megjelenésének és kattintásainak a számlálása. Működés: A kattintásokat és a megjelenéseket egy raw táblába gyüjti, ahol ezek rendszeres időközönként feldoglozásra kerülnek. Egyik legfontosabb része az alábbi függvény, ebben van a statok generálásának üzleti logikája. ProcessLine RacingNet.GeneralBazar.Features.CtrCounter.CtrCounterEngine.ProcessLine Method Ez dolgoz fel egy CtrView-et. Jelenleg ez tartalmazza a statok készítéséhez szükséges valamennyi üzlet logikát. Az ezután generálandó statokat is ebbe kell tenni. Egyesével updatel, a jövőben lehet hogy kéne csinálni valami batch feldolgozást RacingNet.GeneralBazar.Features.CtrCounter.CtrView
1.7 KuponCode Hirdetésfeladás során kuponkódot lehet megadni, amelyért cserébe ajándék szolgáltatást kap. A jelenlegi megvalósítás még erősen favágó: - kupon esetén a BAzarItem flag-et kap - a flagtól függően jelenik meg kiemelve - a kuponkódok be vannak égetve a forráskódba
AdvertEdit_StoreAd RacingNet.GeneralBazar.Features.Plans.KuponManager.AdvertEdit_StoreAd Method AdvertEdit.StoreAd esetén fut le Ellenörzi a kuponkódot, eltárolja a memberhez, beállítja a BazarItem-nek a flag-et, berakja az instantTopKiemelésbe RacingNet.GeneralBazar.Entities.AdvertEditModel
SolrDocModel_setKuponKiemelesByBazarItem RacingNet.GeneralBazar.Features.Plans.KuponManager.SolrDocModel_setKuponKiemelesByBazarItem Method A flag-es kuponkiemelést hajtj végre Vagyis a flag alapján beállítja a lejárat dátumot Ez a SolrDocModel konstruktorából van meghívva RacingNet.GeneralBazar.Models.SolrDocModel, RacingNet.GeneralBazar.Entities.BazarItem
1.8 Recommendation Engine 1.8.1 Generátorok 1.8.1.1 UsedCars További Opel (Astra) használtautók (Debrecenben és környékén) Használtató kategóriából lista képekkel
1.8.1.2 Questions_Similars 1.8.1.3 Parts_Felni Hasonló felnik átmérő és lyukosztás alapján
1.8.1.4 MemberItems 1.8.1.5 FindLinks 1.9 Approving Ez a moderálást jelenti, amelynek során a hirdetéseket moderátorok ellenörzik, és szükség esetén törlik, áthelyezik, képeket törölni belőle, faceteket módosítanak, FaqFlag-okat adnak hozzá. A moderálás koncepciója, hogy minden hirdetéset több moderátornak ellenőrizni kell, és ha ezek megegyeznek, akkor végrehajtódnak, ellenkező esetben pedig kézzel kell őket ellenőrízni. InstantApply: egyes moderátoroknál be lehet állítani egy százalékos értéket, hogy ekkora eséllyel, azonnal érvényesül a moderálása. Ez csak azoknál a Group-oknál működik, ahol explicit módon engedélyezve van. A moderálásook hozzáadódnak a BazarItemhez ( Az ApprovingStatus5 objektumon keresztül), és ez kap egy státuszt: Unchecked: még nem történet moderálás InProgress: már történt moderálás, de még nem gyűlt össze elegendő Gathered: már összegyült elegendő DiffError: a moderálások között eltérések vannak, csekkolni kell őket Applied: a moderálások megegyezőek, és végre lettek hajtva Skipped: a moderálások között volt skipped, emiatt nem lettek végrehjtva Ha összegyült egy itemhez elegendő mennyiségű moderálás (Gathered), akkor a service gondoskodik azoknak a végrehajtásáról, stb...
1.9.1 ApprovingStatus Az ApprovingStatus tartalmazza egy BazarItem approvel-olásának pillanatnyi állapotát (státusz, prioritás, ApprovingActionok, stb...) ApprovingStatus5 RacingNet.GeneralBazar.Features.Approving_v5.ApprovingStatus5 Type slotos moderálás, ez van eltárolva a BazarItem-hez. Tárolja: - Moderálás státusát - Elvégzett moderálások Ezt csak az ApprovingEngine5 piszkalja!
Ezt az objektumot CSAK az ApprovingAction_newForItem hozhatja létre. ApprovingStatus_newForItem RacingNet.GeneralBazar.Features.Approving.ApprovingEngine5.ApprovingStatus_newForItem Method Reseteli egy itemapproving statusat, tehat ujra kell approve-olni Uj hirdetsnel kel hasznalni, vagy hirdetes modositasnal RacingNet.GeneralBazar.Entities.BazarItem
1.9.2 ApprovingQuery A moderálandó hirdetéseket az ApprovingQuery objektumk leszármazottaival lehet lekérdezni: ApprovingQuery RacingNet.GeneralBazar.Features.Approving.ApprovingQuery Type Query-k őse Működés: 1, UI lekérdezi a megjeleníthető queryk listáját GetQueries függvénnyel 2, Kiválasztódik egy query 3, A kiválasztott Query-nek meghívódik a UIState_get, ez alapján inicializálódik a UI 4, User kattintgat a UI-on, majd megnyomja a Fill gombot 5, Ekkor meghívódik az Items_get függvény, paraméterként megkapja az aktuális UI állapotot 6, Amikor kijelőlödik egy BazarItem, a UI meghívja a Quert.Item_selected függvényt 7, Amikor a User befejezi az itemapproveolását (Approve, vagy Skip vagy Delete), a UI létrehozza az ApprovingAction függvényt, és meghívja vele az Engine.Approving_attach függvényt
Általános moderálás, diákmunkás által: AQ_Normal2 RacingNet.GeneralBazar.Features.Approving.AQ_Normal2 Type Masik alapertelmezett query, Elsosorban az InProressegeket listazza, egyebkent meg a magas prioritasukat Beleszamitja a group modositokat is max 50-et ad vissza
Eltérő moderálások összehasonlítása: AQ_DiffErrors RacingNet.GeneralBazar.Features.Approving.AQ_DiffErrors Type Moderatorok csekkolasahoz hasznalt query. A diffErrorokat listazza, minden csoportból max 10-et Mejeleniti az AActionDiffs panelt
Skippedek listázása: AQ_Skippeds RacingNet.GeneralBazar.Features.Approving.AQ_Skippeds Type A Skipped-eket listázza ki
1.9.3 ApprovingAction, Attach, Apply
A moderálás során létrjön az ApprovingAction objektum, amely a moderátor valamennyi módosítását tartalmazza. Az ApprovingAction önálló entitás, de BazarItemhez tartozik. A BazarItem tárolja az ApprovingAction-jainak egy egyszerűsített változatát (ApprovingActionLink) ApprovingAction RacingNet.GeneralBazar.Features.Approving.ApprovingAction Type Egy BazarItem-hez tartozó egy admin által elvégzett egy Approve-olást tartalmaz IMMUTABLE!! egszer összerakjuk, aztán ne változzon
Az ApprovingAction hozzáadódik a BazarItemhez, amely approving statusát az ApprovingStatus objektum tárolja: ApprovingStatus5 RacingNet.GeneralBazar.Features.Approving_v5.ApprovingStatus5 Type slotos moderálás, ez van eltárolva a BazarItem-hez. Tárolja: - Moderálás státusát - Elvégzett moderálások Ezt csak az ApprovingEngine5 piszkalja!
A BazarItemhez az ApprovingAction-t a BazarItemEngine.Attach függvény adja hozzá: Approving_attach RacingNet.GeneralBazar.Features.Approving.ApprovingEngine5.Approving_attach Method Ezt hívja meg a UI, mikor az admin approve-olt egy itemet A modositast rogton perzisztalja is Ez állítja be a Gathered státust is! System.Int64, RacingNet.GeneralBazar.Features.Approving.ApprovingAction
ApprovingStatus5 RacingNet.GeneralBazar.Features.Approving_v5.ApprovingStatus5 Type slotos moderálás, ez van eltárolva a BazarItem-hez. Tárolja: - Moderálás státusát - Elvégzett moderálások Ezt csak az ApprovingEngine5 piszkalja!
1.9.4 Service A Service által futtatott ApprovingFinisher task gondoskodik az a moderálás végrehajtásáról. ApproveFinisherTask RacingNet.GeneralBazar.Features.Approving.ApprovingEngine5.ApproveFinisherTask Method Osszegyujt amiket mar elegen approveoltak, csekkolja oket, es vagy Applizza, vagy DiffErrorozza System.String
A moderálás végül az Apply függvénnyel hajtódik végre ténylegesen Approving_apply RacingNet.GeneralBazar.Features.Approving.ApprovingEngine5.Approving_apply Method Sikeress diff vizsgalat eseten fut le, vegrehatja az approving-ban leveo valtoztatasokat RacingNet.GeneralBazar.Entities.BazarItem, RacingNet.GeneralBazar.Features.Approving.ApprovingAction