# Vrh.Common A modul a Vonalkód Rendszerház fejlesztési környezetében szabványosított és hasznosan alkalmazható eszközeinek gyűjtőhelye. > Igényelt minimális framework verzió: **4.5** > Teljes funkcionalitás és hatékonyság kihasználásához szükséges legalacsonyabb framework verzió: **4.5** # Főbb összetevők ### Interfészek * **[IManage](##IManage)** ### Standard osztályok * **[CheckListJSON](##CheckListJSON)** * **[ReturnInfoJSON](##ReturnInfoJSON)** * **[SelectListJSON](##SelectListJSON)** ## IManage Generikus interfész, melyben azt a típust kell megadni, amely menedzselését végzi. ```javascript /// /// Meghatározza és előírja egy karbantartást és hozzáférést /// biztosító osztály elvárt tulajdonságait és módszereit. /// public interface IManage { /// /// A kezelt típust össze egyedét szolgáltató tulajdonság. /// List All { get; } /// /// A kezelt típus egy elemét adja vissza az egyedi azonosító segítségével. /// /// Az elem egyedi azonosítója. /// T Get(int id); /// /// A kezelt típus egy elemét adja vissza a megadott név segítségével. /// /// Az elem egyedi neve. /// T Get(string name); /// /// Létrehozza a kezelt típus egy elemét. /// /// A kezelt típus egy eleme, amit hozzá kell adni. void Create(T item); /// /// A kezelt típus egy elemét törli az egyedi azonosító alapján. /// /// A törlendő elem egyedi azonosítója. void Delete(int id); /// /// A kezelt típus egy elemét törli az egyedi neve alapján. /// /// A törlendő elem egyedi neve. void Delete(string name); /// /// A kezelt típus egy elemének módosítása. /// Ha nem létezik az hiba. /// /// A kezelt típus egy eleme. void Update(T item); } ``` ## CheckListJSON ```javascript /// /// Egy meghívott akció válaszüzenetének egy lehetséges meghatározott szerkezete. /// Valamely lista ellenőrzéshez használható, amelyben a Checked oszlopban jelölhető az ellenőrzés eredménye. /// public class CheckListJSON { /// /// Az ellenőrzendő illetve ellenőrzött azonosító. /// public string Value { get; set; } /// /// Az ellenőrzéskor megtalált név vagy leíró. /// public string Text { get; set; } /// /// Az ellenőrzés eredményét jelző logikai érték, mely a felhasználáskor /// az üzleti logikától függ. /// public bool Checked { get; set; } } ``` ## ReturnInfoJSON ```javascript /// /// Egy meghívott akció válaszüzenetének egy lehetséges meghatározott szerkezete. /// A válasz érték (ReturnValue) és üzenet (ReturnMessage) formájú. /// Sikeres végrehajtás esetén mindig 0 legyen a ReturnValue. /// Sikertelen esetben ettől eltérő, de ha nincs egyéb ok, akkor hiba esetén legyen -1. /// Alapértelmezett érték: 0, "Az indított akció sikeresen lezajlott!" } /// public class ReturnInfoJSON { /// /// Egy reprezentatív értéke, mely a sikerességtől függ. /// Ha nincs hiba az akció végrehajtásában, akkor 0 legyen az értéke. /// Alapértelmezett értéke: 0 /// public int ReturnValue { get; set; } = 0; /// /// Az akció üzenete. Hiba esetén a hibaüzenet szövege. /// Alapértelmezett értéke: "Az indított akció sikeresen lezajlott!" /// public string ReturnMessage { get; set; } = "Az indított akció sikeresen lezajlott!"; } ``` ## SelectListJSON ```javascript /// /// Egy meghívott akció válaszüzenetének egy lehetséges meghatározott szerkezete. /// Egy listához használható, mely értékeit és azonosítóit fel lehet használni. /// /// /// Egyenértékű a System.Web.Mvc.SelectListItem osztállyal, de nem onnan származik. /// Az ott szereplő leírás: /// "Represents the selected item in an instance of the System.Web.Mvc.SelectList class." /// public class SelectListJSON { /// /// Jelzi, hogy ez az elem a listában letiltott. /// public bool Disabled { get; set; } /// /// A csoport jelölése. Alapértelmezett értéke: null /// public SelectListGroup Group { get; set; } /// /// Jelzi, hogy ez az elem a listában kiválasztott. /// public bool Selected { get; set; } /// /// A listelem szövege, ami megjelenik. /// public string Text { get; set; } /// /// A listelem értéke. /// public string Value { get; set; } } #region SelectListGroup public class /// /// Represents the optgroup HTML element and its attributes. In a select list, /// multiple groups with the same name are supported. /// They are compared with reference equality. /// /// /// A System.Mvc.SelectListItem-mel való kompatibilitás miatt van itt. /// A 'summary' szövege is onnan másolt. /// public class SelectListGroup { /// /// Beállítja, hogy az adott csoport engedélyezett-e. /// public bool Disabled { get; set; } /// /// A csoport neve. /// public string Name { get; set; } } #endregion SelectListGroup public class ``` ### Version History: #### 2.25.0 (2022.10.23) Compatible change: - SmartOrder kiterjesztés kibővítése úgy, hogy navigációs tulajdonságok rendezését is elvégezze. Például mostantól elfogadja a propertyName paraméterben a "Warehouse.Name" vagy "Warehouse.Type.Name" rendezésre vonatkozó rendezési kérést is. #### 2.24.1 Patch (nuget: 2022.10.11): #### 2.24.0 Compatible (nuget: 2022.10.11): - WildCardToRegex osztály létrehozása #### 2.23.1 Compatible (nuget: 2022.05.25): SelectListJSON strukturába a Value alias-aként az Id mező beillesztése #### 2.23.0 Compatible (nuget: 2022.01.31): - VrhCommon / LoadProperties metódus beillesztése - Extensions.IQueriable / ToTraceQuery és ToTraceString beillesztése #### 2.22.0 Compatible (nuget: 2021.12.03): -StringConstructorban regex group alapú ResolveConstructor megvalósítása #### 2.21.3 Patch (nuget): #### 2.21.2 Patch (nuget): - a StringConstructor.ResolveConstructor metódusok nem voltak rekurzívak, tehát ha egy változó értékében másik változó hivatkozás volt, akkor azt már nem oldotta fel; bevezetésre kerültek az azonos paraméterezésű ResolveConstructorR metódusok, amelyek már ebben az értelemben rekurzívan működnek #### 2.21.1 Patch (nuget): #### 2.21.0 Compatible (nuget): -StringConstructorban az adatrész kijelölés formátumának módosítása és a feldolgozás ennek megfelelő átalakítása #### 2.20.1 Patch (nuget): -StringConstructor.ResolveConstructor azonnal visszatér a megadott constructor értékével, ha az null, vagy nincs benne más csak whitespace, vagy ha a helyettesítő szótár üres; #### 2.20.0 Patch (nuget): - StringConstructor.ResolveConstructor-nak több varname separatort is meg lehet adni; a paraméterben a karakterpárok jelentik az alternatívákat, tehát a "{}@@" varnameseparator string a {} és a @@ karakterpárokat jelöli ki szeparátoroknak - ezen kívül javításra került egy hiba, ami az azonos bal és jobb zárókarakterekkel rendelkező varnameseparator értékenél hibás működést eredményezett #### 2.19.1 Patch (nuget): - CommandLine osztályban egy string indexelési hiba javítása #### 2.19.0 Compatible change (nuget): - XmlEscapes és AsciiControlCharacters string extension osztályok megvalósítása #### 2.18.1 Patch (nuget): #### 2.18.0 Compatible change (nuget): - ReturnInfoJSON struktúra kiegészítése egy "object ReturnData" mezővel. #### 2.17.1 Patch (nuget): #### 2.17.0 Patch (nuget): - A ResolveConstructor metódusok rendberakása; volt benne egy felesleges funkció, amit kitöröltem, emiatt azonban ez a metódus nem kompatibilis a 16.xx verziókkal, de a használó program újrafordítás után (mindennemű változtatás nélkül) ismét menni fog. Bocs, nem akartam 3-as verzióra térni. #### 2.16.2 Patch (nuget): #### 2.16.1 Compatible change (nuget): - Bekerült egy újabb ResolveConstructor metódus a StringConstructor osztályba #### 2.16.0 Compatible change (nuget): - Bekerült egy újabb ResolveConstructor metódus a StringConstructor osztályba, ami lehetővé teszi, hogy a konstruktor egy adatelem egy részkaraktersorozatának (substring) kiemelését írja elő {DENAME:from,len} formában #### 2.15.0-2 Compatible change (nuget): - Adding extension methods for integral types #### 2.14.1-3 Compatible change (nuget): - StringConstructor osztályban a nevekben lehet . (pont) karaktert használni, hogy megengedje a minősített neveket #### 2.14.0 Compatible change (nuget): - StringConstructor osztály hozzáadása #### 2.13.2 (2020.03.27) Patches: - NuGet csomag módosítása úgy, hogy a modul ReadMe.md "Build Action" tulajdonsága "None" legyen a telepítés után. Install.ps1 hozzáadása. #### 2.13.1 (2020.03.26) Patches: - Felesleges függések törlése. - XML comment dokumentáció pontosítása. #### 2.13.0 (2020.03.19) Compatible changes: - Vrh.Web.Common.Lib egyes elemeinek átemelése ide #### 2.12.1 (2020.02.13) Patches: - SelectListJSON egyenlőség vizsgálat javítása #### 2.12.0 (2020.02.13) Compatible changes: - SelectListJSON struktúrába beépítésre került egy speciális egyenlőség vizsgálat, amely a Value, a Text és a Group mezők értékének egyenlősége esetén ad igaz értéket; a Disabled és a Selected mezők értéke az egyenlőség vizsgálatban nem játszik szerepet - CheckListJSON és ReturnInfoJSON strukturákhoz analóg módon, mely ugyanezekkel a feltételekkel dolgozik. #### 2.11.1-3 (2019.12.19) Compatible changes: - CommandLine class hibák javítása. #### 2.11.0 (2019.12.17) Compatible changes: - Topshelf formátumú parancssori paraméterek kezelése: -NAME:value #### 2.10.1 (2019.12.17) Patches: - CommandLine osztályban egy javítás #### 2.10.1 (2019.12.05) Patches: - SerializeObject metódusban a string-ek külön kezelése. #### 2.10.0 (2019.10.08) Compatible changes: - ToEnum string extension hozzáadása, amelyik egy stringből megadott tipusú enumra konvertál, vagy a típus (Enum) defaultját adja #### 2.9.0 (2019.09.12) Compatible changes: - EntryAsseblyFixer static class hozzáadása, ami beállítja amegfelelő EntryAssembly-t, ha az alakalmazás tér dinamikus hostolású, ahol null, vagy dynamic az EntryAssembly - EntryAsseblyFixer egység tesztjei ## 2.8.1 (2019.09.07): ### Patch: - Name property típusa javítva. ## v2.8.0 (2019.09.06): ### Compatibility API changes: - ReturnDictJSON adatstruktúra hozzáadva. ## 2.7.0 (2019.08.15) Compatible changes: ### Compatibility API changes: - Az EntityFramework extension bővítése az AlreadyOrdered függvénynel, amely megmondja egy IQueryable-ről, hogy rendezett-e már (tehát a további rendezéséhez az OrderBy, vagy a ThenBy-t kell-e használni) ## 2.6.0 (2019.08.01) Compatible changes: ### Compatibility API changes: - Extensions bővítése az EntityFramework extension-nel, EntityFrameworkQueryHelper bővítő osztály, SmartOrder bővítő metódus (IQueryable típusra) ## 2.5.0 (2019.07.10) Compatible changes: ### Compatibility API changes: - ExtensionMethods bővítése az Enum extensionssel, Enumdata attribútum osztály ## 2.3.0 (2019.05.14) Compatible changes: - IManage interfész áthelyezése Vrh.Web.Common.Lib 1.18.1-es változatából. - Standard osztályok (CheckListJSON, ReturnInfoJSON, SelectListJSON) áthelyezése Vrh.Web.Common.Lib 1.18.1-es változatából. ## 2.2.0 (2018.12.17) ### Compatible changes: - VrhConvert.SerializeObject Private metódus publikussá tétele. ## 2.1.0 (2018.12.17) ### Compatible changes: - Új függvények beillesztése a conversion részbe. ## 2.0.1 (2018.12.12) ### Patches: - ConnandLine osztály metóduasdinak kommentezése és egy apró javítás: a GetCommandLineArgument lekezeli, ha az argumentname paramétere üres string. ## 2.0.0 (2018.11.28) ### Braking change: - 3.5-ös .Net framwork verzi támogatásának megszüntetése új target verzió: 4.5 ### Compatibility API changes: - CommandLine static segéd osztály hozzáadása ## 1.13.0 (2017.04.04) ### Compatibility API changes: - String Extension method: FromHexOrThis ## 1.12.0 (2017.03.29) ### Compatibility API changes: - FixStack class hozzáadása ### Patches: - UnitTest method elnevezések javítása (konvenció kidolgozása) ## 1.11.0 (2017.03.28) ### Compatibility API changes: - Assembly Extension methodok: Version, AssemblyAttribute ## 1.10.0 (2017.03.16) ### Compatibility API changes: - StringBuilder Extension methodok: AppendWithSeparator, Reverse ### Patches: - Extension methodok helyének hozzáadása. - Test projekt hozzáadása ## V1.9.2 (2017.02.21) ### Patches: - Projekt könyvrtárszerkezet rendbetétele. - AutoBuild Vrh Nuget csomaggá alakítás (összes Nuget-tel kapcsolatos elvárás átvezetése) - MinFramweork meghatározás