Exemple #1
0
        public static void FeltoltesFajl(Models.Dokumentum entityDokumentum, FajlBuf fajlBuf)
        {
            var fajlnev = GetFajlnev(entityDokumentum);

            if (!File.Exists(fajlnev))
            {
                throw new Exception("A dokumentumhoz tartozó fájl nincs létrehozva!");
            }

            var fi = new FileInfo(fajlnev);

            if (fi.Length + fajlBuf.b.Length > entityDokumentum.Meret)
            {
                throw new Exception("A dokumentumhoz tartozó fájlhoz már nem illeszthető ennyi bájt...!");
            }

            FileStream fs = null;

            try
            {
                fs = new FileStream(fajlnev, FileMode.Append, FileAccess.Write);

                fs.Write(fajlBuf.b, 0, fajlBuf.b.Length);
            }
            finally
            {
                fs?.Close();
            }
        }
Exemple #2
0
        public static byte[] LetoltesPDFFajl(IConfiguration config, Models.Dokumentum entityDokumentum)
        {
            var ext = entityDokumentum.Ext.ToLower();
            var fb  = LetoltesFajl(entityDokumentum, 0, entityDokumentum.Meret);

            if (ext == ".pdf")
            {
                return(fb.b);
            }
            else if (ext == ".xls" | ext == ".xlsx" | ext == ".doc" | ext == ".docx")
            {
                return(OfficeUtils.ToPdf(config, new OfficeParam {
                    Bytes = fb.b, Ext = ext
                }));
            }
            else if (ext == ".jpg" | ext == ".jpeg" | ext == ".png")
            {
                using (var image = new MagickImage(fb.b))
                {
                    using (var ms = new MemoryStream())
                    {
                        image.Write(ms, MagickFormat.Pdf);

                        ms.Seek(0, SeekOrigin.Begin);
                        var b = new byte[ms.Length];
                        ms.Read(b, 0, (int)ms.Length);

                        return(b);
                    }
                }
            }

            throw new Exception($"A(z) {ext} fájlok nem konvertálhatók!");
        }
Exemple #3
0
        public static async Task <int> AddAsync(ossContext context, Models.Dokumentum entity)
        {
            Register.Creation(context, entity);
            await context.Dokumentum.AddAsync(entity);

            await context.SaveChangesAsync();

            return(entity.Dokumentumkod);
        }
Exemple #4
0
        public static FajlBuf LetoltesFajl(Models.Dokumentum entityDokumentum, int kezdoPozicio, int olvasando)
        {
            var fajlnev = GetFajlnev(entityDokumentum);

            if (!File.Exists(fajlnev))
            {
                throw new Exception("A dokumentumhoz tartozó fájl nem érhető el!");
            }

            var fi = new FileInfo(fajlnev);

            if (kezdoPozicio > fi.Length - 1)
            {
                throw new Exception("Hibás pozíció!");
            }

            FajlBuf fajlBuf;

            FileStream fs = null;

            try
            {
                fs = new FileStream(fajlnev, FileMode.Open, FileAccess.Read);

                var olvashato = (int)fs.Length - kezdoPozicio;
                if (olvashato < olvasando)
                {
                    olvasando = olvashato;
                }

                var b = new byte[olvasando];

                fs.Seek(kezdoPozicio, SeekOrigin.Begin);
                fs.Read(b, 0, olvasando);

                fajlBuf = new FajlBuf
                {
                    b          = b,
                    Ext        = entityDokumentum.Ext,
                    Hash       = entityDokumentum.Hash,
                    IratKod    = entityDokumentum.Iratkod,
                    Megjegyzes = entityDokumentum.Megjegyzes
                };
            }
            finally
            {
                fs?.Close();
            }

            return(fajlBuf);
        }
Exemple #5
0
        private static string GetFajlnev(Models.Dokumentum dokumentum)
        {
            var result = dokumentum.VolumekodNavigation.Eleresiut;

            if (result[result.Length - 1] != Path.DirectorySeparatorChar)
            {
                result += Path.DirectorySeparatorChar;
            }

            result += "VOL" + dokumentum.VolumekodNavigation.Volumeno.ToString("000") + Path.DirectorySeparatorChar +
                      "M" + dokumentum.Konyvtar.ToString("000") + Path.DirectorySeparatorChar +
                      dokumentum.Dokumentumkod.ToString("000000") + dokumentum.Ext;

            return(result);
        }
Exemple #6
0
        public static void EllenorzesFajl(Models.Dokumentum entityDokumentum)
        {
            var fajlnev = GetFajlnev(entityDokumentum);

            if (!File.Exists(fajlnev))
            {
                throw new Exception("A dokumentumhoz tartozó fájl nem érhető el!");
            }

            var ujraHash = Crypt.fMD5Hash(fajlnev);

            if (ujraHash != entityDokumentum.Hash)
            {
                throw new Exception("Hash hiba!");
            }
        }
Exemple #7
0
        public static int BejegyzesFajl(Models.Dokumentum entityDokumentum)
        {
            var fajlnev  = GetFajlnev(entityDokumentum);
            var konyvtar = Path.GetDirectoryName(fajlnev);

            if (!System.IO.Directory.Exists(konyvtar))
            {
                System.IO.Directory.CreateDirectory(konyvtar);
            }

            FileStream fs = null;

            try
            {
                fs = new FileStream(fajlnev, FileMode.Create, FileAccess.Write);
            }
            finally
            {
                fs?.Close();
            }

            return(entityDokumentum.Dokumentumkod);
        }
Exemple #8
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));
        }
Exemple #9
0
 public static async Task DeleteAsync(ossContext context, Models.Dokumentum entity)
 {
     context.Dokumentum.Remove(entity);
     await context.SaveChangesAsync();
 }