예제 #1
0
        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);
        }
예제 #2
0
        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);
        }