public async Task <OutProdavacNarudzbinaDTO> Get(Guid id, HttpContext context) { var narudzbina = await _db.Narudzbine.Include(n => n.Kupac).Include(n => n.Prodavac) .Include(n => n.ListaElemenata).ThenInclude(k => k.Proizvod).FirstOrDefaultAsync(a => a.Id == id); if (narudzbina == null) { return(null); } string userName = TokensHelper.GetClaimFromJwt(context, ClaimTypes.Name); var user = await _userManager.FindByNameAsync(userName); if (user == null) { throw new ErrorException(ErrorCode.UserNotFound, "Prodavac ne postoji u sistemu."); } if (narudzbina.Prodavac.Id != user.Id && narudzbina.Kupac.Id != user.Id) { throw new ErrorException(ErrorCode.OrderAccessError, "Nemate pravo da pristupite ovoj narudzbini."); } var outProdavacNarudzbina = new OutProdavacNarudzbinaDTO { Id = narudzbina.Id, StatusNarudzbine = narudzbina.StatusNarudzbine, VremeIsporukeUDanima = narudzbina.VremeIsporukeUDanima, Prodavac = new Account { Address = narudzbina.Prodavac.Address, Email = narudzbina.Prodavac.Email, FirstName = narudzbina.Prodavac.FirstName, LastName = narudzbina.Prodavac.LastName, PhoneNumber = narudzbina.Prodavac.PhoneNumber }, Kupac = new Account { Address = narudzbina.Kupac.Address, Email = narudzbina.Kupac.Email, FirstName = narudzbina.Kupac.FirstName, LastName = narudzbina.Kupac.LastName, PhoneNumber = narudzbina.Kupac.PhoneNumber }, ListaElemenata = new List <OutElementKorpeDTO>(), DatumNarudzbine = narudzbina.DatumNarudzbine, DatumOdobrenjaNarudzbine = narudzbina.DatumPotvrdeNarudzbine }; foreach (var el in narudzbina.ListaElemenata) { outProdavacNarudzbina.ListaElemenata.Add(new OutElementKorpeDTO { Kolicina = el.Kolicina, Proizvod = new OutProizvodDTO { Id = el.Proizvod.Id, Naziv = el.Proizvod.Naziv, Cena = el.Proizvod.Cena, Opis = el.Proizvod.Opis, NacinKoriscenja = el.Proizvod.NacinKoriscenja, Prodavac = null } }); } return(outProdavacNarudzbina); }
public async Task <List <OutProdavacNarudzbinaDTO> > GetAllForBuyer(HttpContext context) { string userName = TokensHelper.GetClaimFromJwt(context, ClaimTypes.Name); var user = await _userManager.FindByNameAsync(userName); if (user == null) { throw new ErrorException(ErrorCode.UserNotFound, "Prodavac ne postoji u sistemu."); } var narudzbine = await _db.Narudzbine.Include(n => n.Kupac).Include(n => n.Prodavac) .Include(n => n.ListaElemenata).ThenInclude(k => k.Proizvod).Where(k => k.Kupac == user)?.ToListAsync(); if (narudzbine == null) { return(null); } List <OutProdavacNarudzbinaDTO> outProdavacNarudzbine = new List <OutProdavacNarudzbinaDTO>(); foreach (var narudzbina in narudzbine) { var outProdavacNarudzbina = new OutProdavacNarudzbinaDTO { Id = narudzbina.Id, StatusNarudzbine = narudzbina.StatusNarudzbine, VremeIsporukeUDanima = narudzbina.VremeIsporukeUDanima, Kupac = new Account { Address = narudzbina.Kupac.Address, Email = narudzbina.Kupac.Email, FirstName = narudzbina.Kupac.FirstName, LastName = narudzbina.Kupac.LastName, PhoneNumber = narudzbina.Kupac.PhoneNumber }, Prodavac = new Account { Address = narudzbina.Prodavac.Address, Email = narudzbina.Prodavac.Email, FirstName = narudzbina.Prodavac.FirstName, LastName = narudzbina.Prodavac.LastName, PhoneNumber = narudzbina.Prodavac.PhoneNumber }, ListaElemenata = new List <OutElementKorpeDTO>(), DatumNarudzbine = narudzbina.DatumNarudzbine, DatumOdobrenjaNarudzbine = narudzbina.DatumPotvrdeNarudzbine }; foreach (var el in narudzbina.ListaElemenata) { outProdavacNarudzbina.ListaElemenata.Add(new OutElementKorpeDTO { Kolicina = el.Kolicina, Proizvod = new OutProizvodDTO { Id = el.Proizvod.Id, Naziv = el.Proizvod.Naziv, Cena = el.Proizvod.Cena, Opis = el.Proizvod.Opis, NacinKoriscenja = el.Proizvod.NacinKoriscenja, Prodavac = null } }); } outProdavacNarudzbine.Add(outProdavacNarudzbina); } return(outProdavacNarudzbine); }