private void ValidirajUpdateSliku(int id, Fajl Slika) { UserException exception = new UserException(); Igrac igrac = db.Igraci.Find(id); if (igrac == null) { exception.AddError(nameof(Igrac), "Igrac ne smije biti null."); } if (Slika == null) { exception.AddError(nameof(Slika), "Morate uploadat sliku."); } if (!IsDozvoljenTip(Slika)) { exception.AddError(nameof(Slika), "Nedozovljen format fajla. Mozete uploadati samo slike."); } if (exception.Errori.Count > 0) { throw exception; } }
public async Task <Users> Login(Login obj) { var korisnik = await usermanager.FindByEmailAsync(obj.UserName); if (korisnik == null) { UserException ex = new UserException(); ex.AddError("", "Neispravni podaci za login"); throw ex; } var igrac = db.Igraci.Find(korisnik.Id); var rezultat = await signinmanager.CheckPasswordSignInAsync(korisnik, obj.Password, false); if (rezultat.IsLockedOut) { TimeSpan t = (korisnik.LockoutEnd - DateTime.Now) ?? default(TimeSpan); throw new Exception("Vaš profil je zaključan još " + t.Minutes + " minuta i " + t.Seconds + " sekundi."); } else if (rezultat.Succeeded) { var povratni = Get(igrac.ID); return(povratni); } else if (await signinmanager.UserManager.CheckPasswordAsync(korisnik, obj.Password)) { throw new UserException("Morate potvrditi mejl prije logiranja"); } else { throw new UserException("Korisnik ne postoji"); } }
public async Task <SharedModels.Users> ConfirmPasswordChange(string loggedInUserName, PasswordPromjena obj) { var user = await usermanager.FindByEmailAsync(loggedInUserName); if (user != null) { if (obj.password != obj.potvrdaPassword) { throw new UserException("Passwordi se ne slazu."); } var rezultat = await usermanager.ResetPasswordAsync(user, obj.token, obj.password); if (rezultat.Succeeded) { var i = db.Igraci.Find(user.Id); return(mapper.Map <SharedModels.Users>(i)); } else { UserException exception = new UserException(); foreach (var error in rezultat.Errors) { exception.AddError("", error.Description); } throw exception; } } throw new UserException("User ne postoji u bazi."); }
public bool AuthorizeInsert(int UserId) { var suspenzija = suspenzijaService.ImaVazecuSuspenziju(UserId, "Kreiranje takmičenja"); if (suspenzija != null) { UserException ex = new UserException(); ex.AddError("Suspenzija", $"Suspendovani ste sa kreiranjem takmičenja do: {suspenzija.DatumZavrsetka.ToString()}"); throw ex; } return(true); }
public bool AuthorizeLogin(int userId) { var suspenzija = suspenzijaServis.ImaVazecuSuspenziju(userId, "Login"); if (suspenzija != null) { UserException ex = new UserException(); ex.AddError("Suspenzija", $"Suspendovani ste sa loginom do {suspenzija.DatumZavrsetka.ToString()}"); throw ex; } return(true); }
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); }
private void Validiraj(int userId) { UserException exception = new UserException(); var user = db.Igraci.Find(userId); if (user == null) { exception.AddError("", "Igrac ne postoji u bazi."); } var statistika = db.Statistike.Where(s => s.IgracID == userId && s.AkademskaGodina == DateTime.Now.Year).FirstOrDefault(); if (statistika != null) { exception.AddError("", "Statistika za ovog igraca i ovu akademsku godinu vec postoji."); } if (exception.Errori.Count > 0) { throw exception; } }
public void AuthorizePrijava(int UserId, PrijavaInsert obj) { if (UserId != obj.Igrac1ID && UserId != obj.Igrac2ID) { throw new AuthorizeException("Niste autorizovani za takvu radnju."); } var suspenzija = suspenzijaService.ImaVazecuSuspenziju(UserId, "Prijava na takmičenja"); if (suspenzija != null) { UserException ex = new UserException(); ex.AddError("Suspenzija", $"Suspendovani ste sa prijavom na takmičenja do: {suspenzija.DatumZavrsetka.ToString()}"); throw ex; } }
public bool Validiraj(int FeedID) { UserException ex = new UserException(); var feed = db.Feeds.Where(x => x.ID == FeedID).FirstOrDefault(); if (feed == null) { ex.AddError("", "Feed ne postoji ili je obrisan"); } if (ex.Errori.Count > 0) { throw ex; } return(true); }
public void Validiraj(Database.DTOs.Grad obj) { UserException ex = new UserException(); int count = db.Gradovi.Where(x => x.Naziv == obj.Naziv).Count(); if ((obj.ID == 0 && count > 0) || (obj.ID > 0 && count > 1)) // razlika insert i update { ex.AddError("Naziv", "Naziv već postoji"); } if (ex.Errori.Count > 0) { throw ex; } }
private void ValidirajUklanjanjeSlike(int id) { UserException exception = new UserException(); Igrac igrac = db.Igraci.Find(id); if (igrac == null) { exception.AddError(nameof(Igrac), "Igrac ne smije biti null."); } if (exception.Errori.Count > 0) { throw exception; } }
public async Task <SharedModels.Users> CheckValidanLogin(Login obj) { var korisnik = await usermanager.FindByEmailAsync(obj.UserName); if (korisnik == null) { UserException ex = new UserException(); ex.AddError("", "Neispravni podaci za login"); throw ex; } var igrac = db.Igraci.Find(korisnik.Id); var rezultat = await usermanager.CheckPasswordAsync(korisnik, obj.Password); if (rezultat) { return(mapper.Map <SharedModels.Users>(igrac)); } return(null); }
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; } }
//***************************************************** // POMOCNE FUNKCIJE //***************************************************** private void ValidirajDodavanje(int takmicenjeId, PrijavaInsert obj) { var exception = new UserException(); var takmicenje = db.Takmicenja.Where(x => x.ID == takmicenjeId).Include(x => x.Vrsta).SingleOrDefault(); if (takmicenje == null) { exception.AddError("", "Takmicenje ne postoji u bazi."); } var igrac1 = db.Igraci.Find(obj.Igrac1ID); var igrac2 = db.Igraci.Find(obj.Igrac2ID); if (igrac1 == null || (takmicenje != null && takmicenje.Vrsta.Naziv == "Double" && igrac2 == null)) { exception.AddError("", "Igrac ne postoji u bazi."); } if (takmicenje.RokZavrsetkaPrijave >= DateTime.Now) { var pi = db.PrijaveIgraci.Where(p => p.Prijava.TakmicenjeID == takmicenjeId && p.IgracID == obj.Igrac1ID).SingleOrDefault(); if (pi != null) { exception.AddError("", "Igrač je već prijavljen na takmičenje."); } if (obj.Igrac1ID == null) { exception.AddError("", "Polje igrač1 je obavezno."); } if (obj.isTim) { var pi2 = db.PrijaveIgraci.Where(p => p.Prijava.TakmicenjeID == takmicenjeId && p.IgracID == obj.Igrac2ID).SingleOrDefault(); if (pi2 != null) { exception.AddError("", "Igrač je već prijavljen na takmičenje."); } if (obj.Igrac2ID == null) { exception.AddError("", "Polje igrač2 je obavezno."); } if (obj.Naziv == null) { exception.AddError("", "Polje naziv je obavezno."); } var blokListaIgrac2 = db.BlokListe.Where(x => x.IgracID == obj.Igrac2ID && x.TakmicenjeID == takmicenjeId).SingleOrDefault(); if (blokListaIgrac2 != null) { exception.AddError("", "Ovaj igrač je blokiran na ovom takmičenju."); } } if (obj.Igrac1ID == obj.Igrac2ID && obj.Igrac2ID != null) { exception.AddError("", "Ne možete dodati istog igrača kao saigrača."); } var blokListaIgrac1 = db.BlokListe.Where(x => x.IgracID == obj.Igrac1ID && x.TakmicenjeID == takmicenjeId).SingleOrDefault(); if (blokListaIgrac1 != null) { exception.AddError("", "Blokirani ste na ovom takmičenju."); } var naziv = obj.isTim ? obj.Naziv : igrac1.PrikaznoIme; if (db.Prijave.Where(x => x.TakmicenjeID == takmicenjeId && x.Naziv == naziv).SingleOrDefault() != null) { exception.AddError("", "Ime je zauzeto."); } if (exception.Errori.Count > 0) { throw exception; } } }
public async Task <Users> Register(AccountInsert obj) { if (PostojiPrikaznoIme(obj.PrikaznoIme)) { throw new UserException("Prikazno ime koje ste unijeli je vec zauzeto."); } var user = new IdentityUser <int> { UserName = obj.Email, Email = obj.Email }; var result = await usermanager.CreateAsync(user, obj.Password); if (result.Succeeded) { var igrac = new Igrac { ID = user.Id, ELO = 1000, GradID = obj.GradId, BrojPosjetaNaProfil = 0, JacaRuka = obj.JacaRuka, PrikaznoIme = obj.PrikaznoIme, Spol = obj.Spol, Visina = obj.Visina, TwoFactorEnabled = false }; if (obj.Slika != null) { igrac.ProfileImagePath = "content/igraci/" + ProcesSpremanjaSlike(obj.Slika); } var userTemp = mapper.Map <SharedModels.Users>(obj); if (user.Id != 0) { userTemp.ID = user.Id; } db.Add(igrac); db.SaveChanges(); try { var token = await usermanager.GenerateEmailConfirmationTokenAsync(user); mailservis.PosaljiKonfirmacijskiMejl(token, user.Email, "api"); } catch (Exception) {} // da imamo logger ovo bi samo loggovalo, posto nemamo nikom nista, ako nije stiglo korisnik posalje //zahtjev za ponovno slanje mejla i to je to return(userTemp); } else { var exception = new UserException(); foreach (var error in result.Errors) { exception.AddError(error.Code, error.Description); } throw exception; } }