예제 #1
0
        public static async Task <byte[]> FeltetelesSzerzodesAsync(ossContext context, string sid, int projektKod)
        {
            SessionBll.Check(context, sid);
            await CsoportDal.JogeAsync(context, JogKod.PROJEKT);

            var entityProjekt = await ProjektDal.GetAsync(context, projektKod);

            var entityParticio = await ParticioDal.GetAsync(context);

            var pc      = JsonConvert.DeserializeObject <ProjektConf>(entityParticio.Projekt);
            var iratKod = pc.FeltetelesSzerzodesIratkod != null ? (int)pc.FeltetelesSzerzodesIratkod :
                          throw new Exception(string.Format(Messages.ParticioHiba, "FeltetelesSzerzodesIratkod"));

            var original = await IratBll.LetoltesAsync(context, sid, iratKod);

            NumberFormatInfo nfi = new CultureInfo("hu-HU", false).NumberFormat;

            nfi.NumberGroupSeparator = ".";

            var arNetto     = entityProjekt.Vallalasiarnetto;
            var elolegNetto = (int)(arNetto * (decimal)0.7) / 1000 * 1000;

            ComponentInfo.SetLicense(serialKey);

            DocumentModel document;

            using (var msDocx = new MemoryStream())
            {
                msDocx.Write(original.b, 0, original.b.Count());
                document = DocumentModel.Load(msDocx, GemBox.Document.LoadOptions.DocxDefault);
            }

            var mezoertekek = new
            {
                UGYFELNEV            = entityProjekt.UgyfelkodNavigation.Nev,
                UGYFELCIM            = UgyfelBll.Cim(entityProjekt.UgyfelkodNavigation),
                TELEFONSZAM          = entityProjekt.UgyfelkodNavigation.Telefon,
                DC                   = entityProjekt.Dckw.ToString(CultureInfo.CurrentCulture),
                NAPELEM              = entityProjekt.Napelem,
                INVERTER             = entityProjekt.Inverter,
                TELEPITESICIM        = entityProjekt.Telepitesicim,
                KIVITELEZESIHATARIDO = entityProjekt.Kivitelezesihatarido.Value.ToShortDateString(),
                MUNKATERULETATADASA  = DateTime.Now.Date.AddDays(1).ToShortDateString(),
                ARNETTO              = (arNetto - 75000).ToString("#,#", nfi),
                ARBRUTTO             = Calc.RealRound((arNetto - 75000) * (decimal)1.27, 1m).ToString("#,#", nfi),
                DATUM                = DateTime.Now.Date.ToShortDateString()
            };

            document.MailMerge.Execute(mezoertekek);

            byte[] result;

            using (var msDocx = new MemoryStream())
            {
                document.Save(msDocx, GemBox.Document.SaveOptions.DocxDefault);
                result = msDocx.ToArray();
            }

            return(result);
        }
예제 #2
0
        public static async Task <BizonylatComplexDto> CreateNewComplexAsync(ossContext context, string sid)
        {
            SessionBll.Check(context, sid);
            await CsoportDal.JogeAsync(context, JogKod.BIZONYLATMOD);

            var entityParticio = await ParticioDal.GetAsync(context);

            var szc = JsonConvert.DeserializeObject <SzallitoConf>(entityParticio.Szallito);

            var result = new BizonylatComplexDto
            {
                Dto = new BizonylatDto
                {
                    Szallitonev          = szc.Nev,
                    Szallitoiranyitoszam = szc.Iranyitoszam,
                    Szallitohelysegnev   = szc.Helysegnev,
                    Szallitoutcahazszam  = szc.Utcahazszam,
                    Szallitobankszamla1  = szc.Bankszamla1,
                    Szallitobankszamla2  = szc.Bankszamla2,
                    Szallitoadotorzsszam = szc.Adotorzsszam,
                    Szallitoadoafakod    = szc.Adoafakod,
                    Szallitoadomegyekod  = szc.Adomegyekod,

                    Bizonylatkelte     = DateTime.Today,
                    Teljesiteskelte    = DateTime.Today,
                    Fizetesihatarido   = DateTime.Today,
                    Szallitasihatarido = DateTime.Today,
                    Kifizetesrendben   = false,
                    Kiszallitva        = false,
                    Arfolyam           = 1,
                    Ezstornozott       = false,
                    Ezstornozo         = false,

                    Netto  = 0,
                    Afa    = 0,
                    Brutto = 0,

                    Termekdij = 0,

                    Nyomtatottpeldanyokszama = 0
                }
            };

            const string penznem    = "HUF";
            var          lstPenznem = await PenznemDal.ReadAsync(context, penznem);

            if (lstPenznem.Count == 1)
            {
                result.Dto.Penznemkod = lstPenznem[0].Penznemkod;
                result.Dto.Penznem    = penznem;
            }

            result.LstTetelDto     = new List <BizonylatTetelDto>();
            result.LstAfaDto       = new List <BizonylatAfaDto>();
            result.LstTermekdijDto = new List <BizonylatTermekdijDto>();

            return(result);
        }
예제 #3
0
        public static async Task <byte[]> MunkalapAsync(ossContext context, string sid, int projektKod)
        {
            SessionBll.Check(context, sid);
            await CsoportDal.JogeAsync(context, JogKod.PROJEKT);

            var entityProjekt = await ProjektDal.GetAsync(context, projektKod);

            var entityParticio = await ParticioDal.GetAsync(context);

            var pc      = JsonConvert.DeserializeObject <ProjektConf>(entityParticio.Projekt);
            var iratKod = pc.MunkalapIratkod != null ? (int)pc.MunkalapIratkod :
                          throw new Exception(string.Format(Messages.ParticioHiba, "MunkalapIratkod"));

            if (entityProjekt.Munkalapszam == null)
            {
                entityProjekt.Munkalapszam = context.KodGen(KodNev.Munkalapszam) + "/" + DateTime.Now.Year;
                await ProjektDal.UpdateAsync(context, entityProjekt);

                await ProjektDal.GetAsync(context, projektKod);
            }
            var original = await IratBll.LetoltesAsync(context, sid, iratKod);

            ComponentInfo.SetLicense(serialKey);

            DocumentModel document;

            using (var msDocx = new MemoryStream())
            {
                msDocx.Write(original.b, 0, original.b.Count());
                document = DocumentModel.Load(msDocx, GemBox.Document.LoadOptions.DocxDefault);
            }

            var mezoertekek = new
            {
                PROJEKTKOD     = entityProjekt.Projektkod.ToString(),
                UGYFELNEV      = entityProjekt.UgyfelkodNavigation.Nev,
                TELEPITESICIM  = entityProjekt.Telepitesicim,
                PROJEKTJELLEGE = entityProjekt.Projektjellege,
                MUNKALAPSZAM   = entityProjekt.Munkalapszam,
                DC             = entityProjekt.Dckw.ToString(CultureInfo.CurrentCulture),
                AC             = entityProjekt.Ackva.ToString(CultureInfo.CurrentCulture),
                TELEFONSZAM    = entityProjekt.UgyfelkodNavigation.Telefon,
                NAPELEM        = entityProjekt.Napelem,
                INVERTER       = entityProjekt.Inverter
            };

            document.MailMerge.Execute(mezoertekek);

            byte[] result;

            using (var msDocx = new MemoryStream())
            {
                document.Save(msDocx, GemBox.Document.SaveOptions.DocxDefault);
                result = msDocx.ToArray();
            }

            return(result);
        }
예제 #4
0
        public static async Task WebesAjanlatkeresAsync(ossContext context, IHubContext <OssHub> hubcontext,
                                                        IConfiguration config, WebesAjanlatkeresParam par)
        {
            var sid = "";

            sid = await LogonBll.BejelentkezesAsync(context, hubcontext,
                                                    config.GetValue <string>("Webesajanlatkeres:user"),
                                                    Crypt.MD5Hash(config.GetValue <string>("Webesajanlatkeres:password")), "", "", "");

            var csoport = (await LogonBll.SzerepkorokAsync(context, sid))
                          .Where(s => s.Particiokod == par.Particiokod).ToList();

            if (csoport.Count != 1)
            {
                throw new Exception("Konfigurációs hiba 1!");
            }

            await LogonBll.SzerepkorValasztasAsync(context, sid,
                                                   csoport[0].Particiokod, csoport[0].Csoportkod);

            var particioDto = await ParticioDal.GetAsync(context);

            var ec = JsonConvert.DeserializeObject <List <EmailConf> >(particioDto.Emails)
                     .Where(s => s.ConfName == config.GetValue <string>("Webesajanlatkeres:emailconf")).First();

            var dto = new AjanlatkeresDto
            {
                Particiokod              = par.Particiokod,
                Ugynoknev                = par.Ugynoknev,
                Nev                      = par.Nev,
                Cim                      = par.Cim,
                Email                    = par.Email,
                Telefonszam              = par.Telefon,
                Havifogyasztaskwh        = par.Havifogyasztaskwh,
                Haviszamlaft             = par.Haviszamlaft,
                Napelemekteljesitmenyekw = par.Napelemekteljesitmenyekw,
                Megjegyzes               = par.Megjegyzes,
                Letrehozta               = par.Ugynoknev,
                Letrehozva               = DateTime.Now,
                Modositotta              = par.Ugynoknev,
                Modositva                = DateTime.Now,
            };

            var entity = ObjectUtils.Convert <AjanlatkeresDto, Models.Ajanlatkeres>(dto);
            var id     = await AddAsync(context, sid, dto);

            //ügyfél
            var uzenet = $"Tisztelt {par.Nev}!<br><br>A következő adatokkal kért tőlünk ajánlatot: <br><br>Cím: {par.Cim}<br>Email: {par.Email}<br>Telefonszám: {par.Telefon}<br><br>Hamarosan keresni fogjuk a részletek egyeztetése céljából!<br><br>www.gridsolar.hu";

            EmailKuldes(ec, par.Email, "Re: ajánlatkérés", uzenet);
            //sales
            uzenet = $"Hello Timi,<br><br>webes ajánlatkérés érkezett, Id: {id}.<br><br>OSS";
            EmailKuldes(ec, "*****@*****.**", "Webes ajánlatkérés", uzenet);

            await LogonBll.KijelentkezesAsync(context, sid);
        }
예제 #5
0
        public static async Task <byte[]> KeszrejelentesMvmemaszAsync(ossContext context, string sid, int projektKod)
        {
            SessionBll.Check(context, sid);
            await CsoportDal.JogeAsync(context, JogKod.PROJEKT);

            var entityProjekt = await ProjektDal.GetAsync(context, projektKod);

            var entityParticio = await ParticioDal.GetAsync(context);

            var pc      = JsonConvert.DeserializeObject <ProjektConf>(entityParticio.Projekt);
            var iratKod = pc.KeszrejelentesMvmemaszIratkod != null ? (int)pc.KeszrejelentesMvmemaszIratkod :
                          throw new Exception(string.Format(Messages.ParticioHiba, "KeszrejelentesMvmemaszIratkod"));

            var original = await IratBll.LetoltesAsync(context, sid, iratKod);

            ComponentInfo.SetLicense(serialKey);

            DocumentModel document;

            using (var msDocx = new MemoryStream())
            {
                msDocx.Write(original.b, 0, original.b.Count());
                document = DocumentModel.Load(msDocx, GemBox.Document.LoadOptions.DocxDefault);
            }

            var mezoertekek = new
            {
                UGYFELNEV     = entityProjekt.UgyfelkodNavigation.Nev,
                UGYFELCIM     = UgyfelBll.Cim(entityProjekt.UgyfelkodNavigation),
                TELEPITESICIM = entityProjekt.Telepitesicim,
                INVERTER      = entityProjekt.Inverter,
                TELEFONSZAM   = entityProjekt.UgyfelkodNavigation.Telefon,
                EMAIL         = entityProjekt.UgyfelkodNavigation.Email,
                AC            = entityProjekt.Ackva.ToString(CultureInfo.CurrentCulture),
                DATUM         = DateTime.Now.Date.ToShortDateString()
            };

            document.MailMerge.Execute(mezoertekek);

            byte[] result;

            using (var msDocx = new MemoryStream())
            {
                document.Save(msDocx, GemBox.Document.SaveOptions.DocxDefault);
                result = msDocx.ToArray();
            }

            return(result);
        }
예제 #6
0
        public static async Task <byte[]> HMKEtulajdonoshozzajarulas(ossContext context, string sid, int projektKod)
        {
            SessionBll.Check(context, sid);
            await CsoportDal.JogeAsync(context, JogKod.PROJEKT);

            var entityProjekt = await ProjektDal.GetAsync(context, projektKod);

            var entityParticio = await ParticioDal.GetAsync(context);

            var pc      = JsonConvert.DeserializeObject <ProjektConf>(entityParticio.Projekt);
            var iratKod = pc.HMKEtulajdonoshozzajarulasIratkod != null ? (int)pc.HMKEtulajdonoshozzajarulasIratkod :
                          throw new Exception(string.Format(Messages.ParticioHiba, "HMKEtulajdonoshozzajarulasIratkod"));

            var original = await IratBll.LetoltesAsync(context, sid, iratKod);

            NumberFormatInfo nfi = new CultureInfo("hu-HU", false).NumberFormat;

            nfi.NumberGroupSeparator = ".";

            ComponentInfo.SetLicense(serialKey);

            DocumentModel document;

            using (var msDocx = new MemoryStream())
            {
                msDocx.Write(original.b, 0, original.b.Count());
                document = DocumentModel.Load(msDocx, GemBox.Document.LoadOptions.DocxDefault);
            }

            var mezoertekek = new
            {
                UGYFELNEV     = entityProjekt.UgyfelkodNavigation.Nev,
                TELEPITESICIM = entityProjekt.Telepitesicim,
                MEGRENDELVE   = entityProjekt.Megrendelve.Value.ToShortDateString(),
            };

            document.MailMerge.Execute(mezoertekek);

            byte[] result;

            using (var msDocx = new MemoryStream())
            {
                document.Save(msDocx, GemBox.Document.SaveOptions.DocxDefault);
                result = msDocx.ToArray();
            }

            return(result);
        }
예제 #7
0
        public static async Task <byte[]> ElegedettsegAsync(ossContext context, string sid, int projektKod)
        {
            SessionBll.Check(context, sid);
            await CsoportDal.JogeAsync(context, JogKod.PROJEKT);

            var entityProjekt = await ProjektDal.GetAsync(context, projektKod);

            var entityParticio = await ParticioDal.GetAsync(context);

            var pc      = JsonConvert.DeserializeObject <ProjektConf>(entityParticio.Projekt);
            var iratKod = pc.ElegedettsegiFelmeresIratkod != null ? (int)pc.ElegedettsegiFelmeresIratkod :
                          throw new Exception(string.Format(Messages.ParticioHiba, "ElegedettsegiFelmeresIratkod"));

            var original = await IratBll.LetoltesAsync(context, sid, iratKod);

            ComponentInfo.SetLicense(serialKey);

            DocumentModel document;

            using (var msDocx = new MemoryStream())
            {
                msDocx.Write(original.b, 0, original.b.Count());
                document = DocumentModel.Load(msDocx, GemBox.Document.LoadOptions.DocxDefault);
            }

            var mezoertekek = new
            {
                PROJEKTKOD    = entityProjekt.Projektkod.ToString(),
                UGYFELNEV     = entityProjekt.UgyfelkodNavigation.Nev,
                TELEPITESICIM = entityProjekt.Telepitesicim
            };

            document.MailMerge.Execute(mezoertekek);

            byte[] result;

            using (var msDocx = new MemoryStream())
            {
                document.Save(msDocx, GemBox.Document.SaveOptions.DocxDefault);
                result = msDocx.ToArray();
            }

            return(result);
        }
예제 #8
0
        public static async Task UpdateRoleAsync(ossContext context, string sid, int particioKod, int csoportKod)
        {
            await CsoportDal.CheckSzerepkorAsync(context, particioKod, csoportKod);

            var entityParticio = ParticioDal.Get(context, particioKod);
            var entityCsoport  = await CsoportDal.GetAsync(context, csoportKod);

            lock (LockMe)
            {
                var entity = SessionDal.Get(context, sid);

                entity.Particiokod = particioKod;
                entity.Particio    = entityParticio.Megnevezes;
                entity.Csoportkod  = csoportKod;
                entity.Csoport     = entityCsoport.Csoport1;

                SessionDal.Update(context, entity);
                entity = SessionDal.Get(context, sid);

                context.CurrentSession = entity;
            }
        }
예제 #9
0
        public static async Task <int> AjanlatKesztitesAsync(ossContext context, string sid,
                                                             int projektKod, List <AjanlatBuf> ajanlatBuf, List <SzMT> fi)
        {
            SessionBll.Check(context, sid);
            await CsoportDal.JogeAsync(context, JogKod.AJANLATKESZITES);

            ExcelFile      _excel;
            ExcelWorksheet _sheet;

            SpreadsheetInfo.SetLicense("ERDD-TN5J-YKX9-H1KX");

            var ervenyes             = SzMTUtils.GetDate(fi, Szempont.Ervenyes);
            var tajolas              = SzMTUtils.GetString(fi, Szempont.Tajolas);
            var termeles             = SzMTUtils.GetInt(fi, Szempont.Termeles);
            var megjegyzes           = SzMTUtils.GetString(fi, Szempont.Megjegyzes);
            var szuksegesAramerosseg = SzMTUtils.GetString(fi, Szempont.SzuksegesAramerosseg);

            var entityProjekt = await ProjektDal.GetAsync(context, projektKod);

            var entityParticio = await ParticioDal.GetAsync(context);

            var pc      = JsonConvert.DeserializeObject <ProjektConf>(entityParticio.Projekt);
            var iratKod = pc.AjanlatIratkod != null ? (int)pc.AjanlatIratkod :
                          throw new Exception(string.Format(Messages.ParticioHiba, "AjanlatIratkod"));

            var fb = await IratBll.LetoltesAsync(context, sid, iratKod);

            using (var msExcel = new MemoryStream())
            {
                msExcel.Write(fb.b, 0, fb.b.Count());
                msExcel.Position = 0;
                _excel           = ExcelFile.Load(msExcel, GemBox.Spreadsheet.LoadOptions.XlsDefault);
            }
            if (_excel.Worksheets.Count != 1)
            {
                throw new Exception("Az alapbizonylat nincs előkészítve!");
            }
            _sheet = _excel.Worksheets[0];

            XlsUtils.Mezo(_sheet, 7, 3, entityProjekt.UgyfelkodNavigation.Nev);
            XlsUtils.Mezo(_sheet, 7, 8, DateTime.Now.Date.ToShortDateString());
            XlsUtils.Mezo(_sheet, 8, 8, ervenyes.Date.ToShortDateString());
            var ugyfelCim = UgyfelBll.Cim(entityProjekt.UgyfelkodNavigation).Trim(' ', ',');

            XlsUtils.Mezo(_sheet, 10, 3, ugyfelCim);

            var napelem              = ajanlatBuf.First(s => s.AjanlatTetelTipus == AjanlatTetelTipus.Napelem);
            var inverter             = ajanlatBuf.First(s => s.AjanlatTetelTipus == AjanlatTetelTipus.Inverter);
            var mechanikaiSzerelveny =
                ajanlatBuf.First(s => s.AjanlatTetelTipus == AjanlatTetelTipus.MechanikaiSzerelveny);
            var villamosSzerelveny = ajanlatBuf.First(s => s.AjanlatTetelTipus == AjanlatTetelTipus.VillamosSzerelveny);
            var ugyintezes         = ajanlatBuf.First(s => s.AjanlatTetelTipus == AjanlatTetelTipus.Ugyintezes);
            var munkadij           = ajanlatBuf.First(s => s.AjanlatTetelTipus == AjanlatTetelTipus.Munkadij);
            var tuzesetiKapcsolo   = ajanlatBuf.First(s => s.AjanlatTetelTipus == AjanlatTetelTipus.TuzesetiKapcsolo);

            var dckW  = Calc.RealRound(napelem.OsszTeljesitmeny / 1000, 0.01m);
            var ackVa = Calc.RealRound(inverter.OsszTeljesitmeny / 1000, 0.01m);

            XlsUtils.Mezo(_sheet, 13, 3, dckW);
            XlsUtils.Mezo(_sheet, 14, 3, ackVa);
            XlsUtils.Mezo(_sheet, 15, 3, szuksegesAramerosseg);

            XlsUtils.Mezo(_sheet, 13, 5, tajolas);
            XlsUtils.Mezo(_sheet, 14, 5, "min. " + (dckW * termeles).ToString("#0.") +
                          " kWh, azaz " + (dckW * termeles * 40).ToString("#0.") + " Ft");

            XlsUtils.Mezo(_sheet, 18, 3, napelem.CikkNev);
            XlsUtils.Mezo(_sheet, 18, 5, napelem.Mennyiseg);
            XlsUtils.Mezo(_sheet, 18, 6, napelem.EgysegAr);

            XlsUtils.Mezo(_sheet, 19, 3, inverter.CikkNev);
            XlsUtils.Mezo(_sheet, 19, 5, inverter.Mennyiseg);
            XlsUtils.Mezo(_sheet, 19, 6, inverter.EgysegAr);

            XlsUtils.Mezo(_sheet, 20, 3, mechanikaiSzerelveny.CikkNev);
            XlsUtils.Mezo(_sheet, 20, 5, mechanikaiSzerelveny.Mennyiseg);
            XlsUtils.Mezo(_sheet, 20, 6, mechanikaiSzerelveny.EgysegAr);

            XlsUtils.Mezo(_sheet, 21, 3, villamosSzerelveny.CikkNev);
            XlsUtils.Mezo(_sheet, 21, 5, villamosSzerelveny.Mennyiseg);
            XlsUtils.Mezo(_sheet, 21, 6, villamosSzerelveny.EgysegAr);

            XlsUtils.Mezo(_sheet, 22, 7, ugyintezes.EgysegAr);

            XlsUtils.Mezo(_sheet, 23, 7, munkadij.EgysegAr);

            XlsUtils.Mezo(_sheet, 26, 7, tuzesetiKapcsolo.EgysegAr);

            var gar =
                "A napelemekre {0} év gyári, az inverterre {1} év gyári, mechanikai szerelvényre {2} év, villamos szerelvényre {3} év, kivitelezésre {4} év garancia érvényes.";

            XlsUtils.Mezo(_sheet, 33, 3,
                          string.Format(gar, napelem.Garancia, inverter.Garancia, mechanikaiSzerelveny.Garancia,
                                        villamosSzerelveny.Garancia, munkadij.Garancia));

            var felhasznalo = await FelhasznaloDal.GetAsync(context, context.CurrentSession.Felhasznalokod);

            XlsUtils.Mezo(_sheet, 8, 3, $"{felhasznalo.Nev}, {felhasznalo.Telefon}, {felhasznalo.Email}");

            //az excel mezőkkiértékelése
            _sheet.Calculate();

            const string irattipus    = "Ajánlat";
            var          lstIrattipus = (await IrattipusDal.ReadAsync(context, irattipus)).Where(s => s.Irattipus1 == irattipus).ToList();

            if (lstIrattipus.Count != 1)
            {
                throw new Exception($"Hiányzó irattipus: {irattipus}!");
            }

            var ujIrat = new Models.Irat
            {
                Irany        = "Ki",
                Keletkezett  = DateTime.Now.Date,
                Irattipuskod = lstIrattipus[0].Irattipuskod,
                Ugyfelkod    = entityProjekt.Ugyfelkod,
                Targy        = megjegyzes
            };

            var ujIratKod = await IratDal.AddAsync(context, ujIrat);

            using (var stream = new MemoryStream())
            {
                _excel.Save(stream, SaveOptions.XlsDefault);

                stream.Position = 0;
                var fajlBuf = new FajlBuf
                {
                    Meret      = (int)stream.Length,
                    Ext        = fb.Ext,
                    Hash       = Crypt.MD5Hash(stream),
                    IratKod    = ujIratKod,
                    Megjegyzes = megjegyzes,
                    b          = stream.ToArray()
                };

                await DokumentumBll.FeltoltesAsync(context, sid, fajlBuf);
            }

            return(await ProjektKapcsolatBll.AddIratToProjektAsync(context, sid, projektKod, ujIratKod));
        }
예제 #10
0
        public static async Task <Models.Dokumentum> BejegyzesAsync(ossContext context, string sid, FajlBuf fajlBuf)
        {
            const int minSize = 100 * 1024 * 1024;

            SessionBll.Check(context, sid);
            await CsoportDal.JogeAsync(context, JogKod.IRAT);

            Models.Volume entityVolume;
            int           ujFajlMerete = fajlBuf.Meret;

            // lock-ban nem lehet async
            var entityParticio = await ParticioDal.GetAsync(context);

            var vc = JsonConvert.DeserializeObject <VolumeConf>(entityParticio.Volume);

            var Eleresiut = vc.UjvolumeEleresiut ?? throw new Exception(string.Format(Messages.ParticioHiba, "UjvolumeEleresiut"));

            if (!Directory.Exists(Eleresiut))
            {
                throw new Exception($"UjvolumeEleresiut: nem létező könyvtár: {Eleresiut}!");
            }

            var Maxmeret = vc.UjvolumeMaxmeret != null ? (int)vc.UjvolumeMaxmeret :
                           throw new Exception(string.Format(Messages.ParticioHiba, "UjvolumeMaxmeret"));

            if (Maxmeret < minSize)
            {
                throw new Exception($"UjvolumeMaxmeret: az érték legyen nagyobb, mint {minSize} - jelenleg {Maxmeret}!");
            }

            lock (LockMe)
            {
                var lstVolume = VolumeDal.ReadElegSzabadHely(context, ujFajlMerete);

                if (lstVolume.Count > 0)
                {
                    entityVolume = lstVolume[0];

                    if (++entityVolume.Fajlokszamautolsokonyvtarban > 100)
                    {
                        ++entityVolume.Utolsokonyvtar;
                        entityVolume.Fajlokszamautolsokonyvtarban = 1;
                    }
                    entityVolume.Jelenlegimeret += ujFajlMerete;
                    //ezt lehetne okosítani...
                    if ((entityVolume.Maxmeret - entityVolume.Jelenlegimeret) < (10 * 1024 * 1024))
                    {
                        entityVolume.Allapot = KotetAllapot.Closed.ToString();
                    }
                    entityVolume.Allapotkelte = DateTime.Now;

                    VolumeDal.Update(context, entityVolume);
                }
                else
                {
                    entityVolume = new Models.Volume
                    {
                        Particiokod    = (int)context.CurrentSession.Particiokod,
                        Volumeno       = context.KodGen(KodNev.Volume),
                        Eleresiut      = Eleresiut,
                        Maxmeret       = Maxmeret,
                        Jelenlegimeret = ujFajlMerete,
                        Utolsokonyvtar = 1,
                        Fajlokszamautolsokonyvtarban = 1,
                        Allapot      = KotetAllapot.Opened.ToString(),
                        Allapotkelte = DateTime.Now
                    };

                    VolumeDal.Add(context, entityVolume);
                }
            }

            var entityDokumentum = new Models.Dokumentum
            {
                Volumekod  = entityVolume.Volumekod,
                Konyvtar   = entityVolume.Utolsokonyvtar,
                Meret      = ujFajlMerete,
                Ext        = fajlBuf.Ext,
                Hash       = fajlBuf.Hash,
                Iratkod    = fajlBuf.IratKod,
                Megjegyzes = fajlBuf.Megjegyzes
            };

            var dokumentumKod = await DokumentumDal.AddAsync(context, entityDokumentum);

            return(await DokumentumDal.GetWithVolumeAsync(context, dokumentumKod));
        }
예제 #11
0
        public static async Task <byte[]> NyomtatasAsync(IConfiguration config, ossContext context, string sid,
                                                         int bizonylatKod, BizonylatNyomtatasTipus nyomtatasTipus)
        {
            const string minta = "!!! MINTA !!!";

            SessionBll.Check(context, sid);
            await CsoportDal.JogeBizonylatAsync(context);

            var entityBizonylat = await BizonylatDal.GetComplexAsync(context, bizonylatKod);

            await BizonylatDal.Lock(context, bizonylatKod, entityBizonylat.Modositva);

            if ((nyomtatasTipus == BizonylatNyomtatasTipus.Eredeti ||
                 nyomtatasTipus == BizonylatNyomtatasTipus.Másolat) && entityBizonylat.Bizonylatszam == null)
            {
                throw new Exception("Erről a bizonylatról csak MINTA nyomatási kép készülhet!");
            }

            var entityParticio = await ParticioDal.GetAsync(context);

            var bc          = JsonConvert.DeserializeObject <BizonylatConf>(entityParticio.Bizonylat);
            var iratKod     = bc.BizonylatkepIratkod ?? throw new Exception(string.Format(Messages.ParticioHiba, "BizonylatkepIratkod"));
            var peldanyszam = bc.EredetipeldanyokSzama ?? throw new Exception(string.Format(Messages.ParticioHiba, "EredetipeldanyokSzama"));

            if (peldanyszam <= 0 || peldanyszam > 3)
            {
                throw new Exception($"EredetipeldanyokSzama: Hibás érték, legyen 1, 2 vagy 3, most {peldanyszam} !");
            }
            var masolat = bc.MasolatokSzama ?? throw new Exception(string.Format(Messages.ParticioHiba, "MasolatokSzama"));

            if (masolat <= 0 || masolat > 3)
            {
                throw new Exception($"MasolatokSzama: Hibás érték, legyen 1, 2 vagy 3, most {masolat} !");
            }

            var szamlakep = await IratBll.LetoltesAsync(context, sid, iratKod);

            var v = await VerzioDal.GetAsync(context);

            var fejlec = BizonylatBll.Bl[entityBizonylat.Bizonylattipuskod].BizonylatFejlec;

            if (nyomtatasTipus == BizonylatNyomtatasTipus.Minta)
            {
                fejlec = minta + " - " + fejlec;
            }

            var printer = new BizonylatPrinter();

            printer.Setup(entityBizonylat, szamlakep.b, fejlec, v);

            switch (nyomtatasTipus)
            {
            case BizonylatNyomtatasTipus.Minta:
                printer.UjPeldany("1", minta);
                break;

            case BizonylatNyomtatasTipus.Eredeti:
                for (var i = 1; i <= peldanyszam; i++)
                {
                    printer.UjPeldany(i.ToString(), "Eredeti");
                }

                if (entityBizonylat.Nyomtatottpeldanyokszama == 0)
                {
                    await UpdateNyomtatottPeldanyAsync(context, bizonylatKod, peldanyszam);
                }
                break;

            case BizonylatNyomtatasTipus.Másolat:
                if (entityBizonylat.Nyomtatottpeldanyokszama == 0)
                {
                    throw new Exception("Még nem készült eredeti példány!");
                }

                var sorszamTol = entityBizonylat.Nyomtatottpeldanyokszama + 1;
                var sorszamIg  = sorszamTol + masolat - 1;
                for (var i = sorszamTol; i <= sorszamIg; i++)
                {
                    printer.UjPeldany(i.ToString(), "Másolat");
                }

                await UpdateNyomtatottPeldanyAsync(context, bizonylatKod, sorszamIg);

                break;
            }

            return(printer.Print(config));
        }