using FakturyWeb.Business; using FakturyWeb.Data; using Microsoft.VisualBasic.CompilerServices; using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Linq; namespace RazorPagesMovie.Models { public class FAKTURA { public int ID { get; set; } [Required] [DisplayName("Zákazník")] [Range(1, Int32.MaxValue, ErrorMessage = "Vyberte zákazníka ze seznamu")] public int ZakaznikID { get; set; } public ZAKAZNIK ZAKAZNIK { get; set; } public ICollection POLOZKY { get; set; } public ICollection PLATBY { get; set; } [DisplayName("Číslo")] public string CISLO { get; set; } public int CISLO_ABS { get; set; } [DataType(DataType.Date)] [DisplayName("Datum vystavení")] public DateTime VYSTAVENI { get; set; } [DataType(DataType.Date)] [DisplayName("Datum splatnosti")] public DateTime SPLATNOST { get; set; } [DisplayName("Dodavatel")] public string D_PRAJM { get; set; } [DisplayName("Ulice")] public string D_ULICE { get; set; } [DisplayName("Město")] public string D_MESTO { get; set; } [DisplayName("PSČ")] public string D_PSC { get; set; } [DisplayName("IČ")] public string D_IC { get; set; } [DisplayName("DIČ")] public string D_DIC { get; set; } [DisplayName("Bankovní účet")] public string D_BANKA { get; set; } [DisplayName("Telefon")] public string D_TELEFON { get; set; } [DisplayName("E-mail")] public string D_EMAIL { get; set; } [DisplayName("Web")] public string D_WEB { get; set; } [DisplayName("Odběratel")] public string O_PRAJM { get; set; } [DisplayName("Ulice")] public string O_ULICE { get; set; } [DisplayName("Město")] public string O_MESTO { get; set; } [DisplayName("PSČ")] public string O_PSC { get; set; } [DisplayName("IČ")] public string O_IC { get; set; } [DisplayName("DIČ")] public string O_DIC { get; set; } [DisplayName("Forma úhrady")] public byte FORMA_UHRADY { get; set; } [DisplayName("Popis činností")] public string CINNOSTI { get; set; } public FAKTURA() { VYSTAVENI = DateTime.Today; SPLATNOST = VYSTAVENI.Date.AddDays(15); FORMA_UHRADY = 1; } public void Init(FakturyWebContext context) { SetCisloFaktury(context); } private void SetCisloFaktury(FakturyWebContext context) { if (!context.UZIVATEL.Any()) { return; } // get nastavení: UZIVATEL myUzivatel = context.UZIVATEL.First(); D_PRAJM = myUzivatel.PRAJM; D_ULICE = myUzivatel.ULICE; D_PSC = myUzivatel.PSC; D_MESTO = myUzivatel.MESTO; D_IC = myUzivatel.IC; D_DIC = myUzivatel.DIC; D_TELEFON = myUzivatel.TELEFON; D_EMAIL = myUzivatel.EMAIL; D_BANKA = myUzivatel.BANKA; D_WEB = myUzivatel.WEB; //číslo faktury: int poslCislo = 0; if (myUzivatel.FAKTURA_CISLOVANI == 1) // po roce... { poslCislo = (from f in context.FAKTURA where f.VYSTAVENI.Year == VYSTAVENI.Year orderby f.CISLO_ABS descending select f.CISLO_ABS).FirstOrDefault(); CISLO_ABS = poslCislo + 1; } else // po měsíci... { poslCislo = (from f in context.FAKTURA where f.VYSTAVENI.Year == this.VYSTAVENI.Year & f.VYSTAVENI.Month == this.VYSTAVENI.Month orderby f.CISLO_ABS descending select f.CISLO_ABS).FirstOrDefault(); CISLO_ABS = poslCislo + 1; } // formát čísla: string myCislo = ""; try { var myParser = new ParserFakturaCislo(myUzivatel.FAKTURA_MASKA); myParser.Parse(); foreach (var symb in myParser.logic) { switch (symb.GetTyp) { case var @case when Operators.ConditionalCompareObjectEqual(@case, SymbolEnum.CISLO2, false): { myCislo += CISLO_ABS.ToString("00"); break; } case var case1 when Operators.ConditionalCompareObjectEqual(case1, SymbolEnum.CISLO4, false): { myCislo += CISLO_ABS.ToString("0000"); break; } case var case2 when Operators.ConditionalCompareObjectEqual(case2, SymbolEnum.CISLO6, false): { myCislo += CISLO_ABS.ToString("000000"); break; } case var case3 when Operators.ConditionalCompareObjectEqual(case3, SymbolEnum.ROK, false): { myCislo += VYSTAVENI.ToString("yyyy"); break; } case var case4 when Operators.ConditionalCompareObjectEqual(case4, SymbolEnum.MESIC, false): { myCislo += VYSTAVENI.ToString("MM"); break; } case var case5 when Operators.ConditionalCompareObjectEqual(case5, SymbolEnum.TEXT, false): { myCislo += symb.ToString(); break; } } } } catch (Exception ex) { myCislo = "0"; } if (myCislo.Length > 20) { //VystrazneHlaseni("Číslo faktury může mít maximálně 20 znaků. Číslo faktury bude oříznuto."); //myCislo = Strings.Left(myCislo, 20); } CISLO = myCislo; } } }