コード例 #1
0
        private bool Validiraj(ReportsInsert obj)
        {
            UserException ex = new UserException();

            if (!OdgovarajuciFajlovi(obj.Prilozi))
            {
                ex.AddError(nameof(obj.Prilozi), "Možete uploadovati samo slike");
            }
            if (ex.Errori.Count > 0)
            {
                throw ex;
            }
            return(true);
        }
コード例 #2
0
 public SharedModels.Reports Add(ReportsInsert obj, string rootFolder = "content")  // razmisliti da se iz httpcontext. izvuce root path aplikacije kako bi se
 //uploadovo fajl tj da se ovoj metodi posalje taj parametar a ne ovako da ovaj nagadja sa ~/reports
 // kad se stavi ~ frajer napravi folder koji se zove ~ i onda u njemu reports, ne valja, ne moze tako, dakle on po defaultu kad ides create
 //directory pravi u ovom svom folderu gdje se pokrece web api, tako da stavit cu content da je folder a u njega reports, pa tamo za igrace
 //ce biti
 {
     Validiraj(obj);
     using (var transakcija = db.Database.BeginTransaction())
     {
         List <string> bekapPlan = new List <string>();
         try
         {
             //var bazaObj = mapko.Map<Database.DTOs.Report>(obj);
             var bazaObj = new Database.DTOs.Report
             {
                 DatumKreiranja = obj.DatumKreiranja ?? DateTime.Now,
                 Email          = obj.Email,
                 Naslov         = obj.Naslov,
                 Sadrzaj        = obj.Sadrzaj
             };
             bazaObj.Prilozi = new List <Database.DTOs.Attachment>();
             db.Reports.Add(bazaObj);
             db.SaveChanges();
             if (obj.Prilozi != null)
             {
                 foreach (Fajl i in obj.Prilozi)
                 {
                     using (MemoryStream ms = new MemoryStream(i.BinarniZapis))
                     {
                         //valja istraziti tj kako spremiti u zajednicki folder za webapp i webapi
                         Directory.CreateDirectory(Path.Combine(rootFolder, "reports"));
                         string ImeFajla      = Guid.NewGuid().ToString() + "_" + i.Naziv;
                         string pathSpremanja = Path.Combine(rootFolder, "reports", ImeFajla);
                         using (FileStream strim = new FileStream(pathSpremanja, FileMode.Create))
                             ms.CopyTo(strim);
                         bekapPlan.Add(pathSpremanja);
                         Attachment noviAttachment = new Attachment {
                             DatumUnosa = DateTime.Now, Path = pathSpremanja
                         };
                         db.Attachments.Add(noviAttachment);
                         bazaObj.Prilozi.Add(noviAttachment);
                     }
                 }
                 db.SaveChanges();
                 transakcija.Commit();
                 //ovdje treba pozvati email servis i obavijestiti adminsitratora o novom reportu
                 try
                 {
                     emailServis.PosaljiMejlReport(bazaObj);
                 }
                 catch (Exception) { }
                 var povratni = new SharedModels.Reports
                 {
                     ID             = bazaObj.ID,
                     Email          = bazaObj.Email,
                     DatumKreiranja = bazaObj.DatumKreiranja,
                     Naslov         = bazaObj.Naslov,
                     Sadrzaj        = bazaObj.Sadrzaj
                 };
                 //mapko ovdje ne moze osvojit,  zbog problema Prilozi su u klasi database.dtos.reports
                 //tipa list<attachment> dok su u sharedmodels.requests.reportsinsert zbog potrebe prenosa binarnih fajlova u formi list<Fajl>
                 //tako da ovdje svakako ne treba slat fajlove, mada se mogu
                 return(povratni);
             }
         }
         catch (DbUpdateException)
         {
             transakcija.Rollback();
             foreach (string i in bekapPlan)
             {
                 if (System.IO.File.Exists(i))
                 {
                     System.IO.File.Delete(i);
                 }
             }
         }
         UserException ex = new UserException();
         ex.AddError("error", "Došlo je do greške prilikom pohrane fajlova, pokušajte ponovo");
         throw ex;
     }
 }
コード例 #3
0
 public Reports Add([FromBody] ReportsInsert obj)
 {
     return(reportsService.Add(obj, "content"));
 }