public async Task <ZahtjevDto> OdobriZahtjev(OdobravanjeZahtjevaDto odobravanjeZahtjeva)
        {
            // trazimo zahtjev po id-u
            var zahtjev = await _context.Zahtjevi
                          .Include(v => v.Valuta)
                          .Where(z => z.ZahtjevId == odobravanjeZahtjeva.ZahtjevId)
                          .ProjectTo <ZahtjevDto>(_mapper.ConfigurationProvider)
                          .Select(z => new ZahtjevDto()
            {
                ZahtjevId             = z.ZahtjevId,
                KorisnikId            = z.KorisnikId,
                ProdajemValutaId      = z.ProdajemValutaId,
                ProdajemValuta        = _context.Valute.Where(v => v.ValutaId == z.ProdajemValutaId).Select(s => s.Naziv).FirstOrDefault(),
                KupujemValutaId       = z.KupujemValutaId,
                KupujemValuta         = _context.Valute.Where(v => v.ValutaId == z.KupujemValutaId).Select(s => s.Naziv).FirstOrDefault(),
                Iznos                 = z.Iznos,
                Prihvacen             = z.Prihvacen,
                DatumVrijemeKreiranja = DateTime.Now
            })
                          .FirstOrDefaultAsync();

            var httpClient = _httpClientFactory.CreateClient();
            var url        = $"https://v6.exchangerate-api.com/v6/09a14a921f6de3a3c311a083/pair/{zahtjev.ProdajemValuta}/{zahtjev.KupujemValuta}/{zahtjev.Iznos}";
            var response   = await httpClient.GetAsync(url);

            var responseStream = await response.Content.ReadAsStreamAsync();

            var responseObject = await JsonSerializer.DeserializeAsync <KonverzijaValute>(responseStream);


            // dobijemo period u kojem se ta valuta moze prodati po idu
            var vrijemeProdaje = await _context.Valute
                                 .Where(v => v.ValutaId == zahtjev.ProdajemValutaId)
                                 .Select(v => new VrijemeValuteDto()
            {
                AktivnoOd = v.AktivnoOd,
                AktivnoDo = v.AktivnoDo
            })
                                 .FirstOrDefaultAsync();

            //trazimo sva vremena i gledamo da li je moguca prodaja
            TimeSpan start = vrijemeProdaje.AktivnoOd; //10
            TimeSpan end   = vrijemeProdaje.AktivnoDo; //12
            TimeSpan now   = DateTime.Now.TimeOfDay;

            if ((now < start) && (now > end))
            {
                throw new Exception("Zahtjev se ne može odobriti jer se navedena valuta ne može prodati u ovo doba dana.");
            }

            if (odobravanjeZahtjeva.Prihvacen == 2)
            {
                var prodajnoSredstvo = await _context.Sredstva
                                       .Where(u => u.KorisnikId == zahtjev.KorisnikId && u.ValutaId == zahtjev.ProdajemValutaId)
                                       .FirstOrDefaultAsync();

                prodajnoSredstvo.Iznos -= zahtjev.Iznos;

                _context.Sredstva.Update(prodajnoSredstvo);
                await _context.SaveChangesAsync();

                var kupovnoSredstvo = await _context.Sredstva
                                      .Where(u => u.KorisnikId == zahtjev.KorisnikId && u.ValutaId == zahtjev.KupujemValutaId)
                                      .FirstOrDefaultAsync();

                if (kupovnoSredstvo == null)
                {
                    var kupovno = new Sredstva()
                    {
                        ValutaId   = zahtjev.KupujemValutaId,
                        KorisnikId = zahtjev.KorisnikId,
                        Iznos      = responseObject.conversion_result
                    };
                    _context.Sredstva.Add(kupovno);
                    await _context.SaveChangesAsync();
                }
                else
                {
                    kupovnoSredstvo.Iznos += responseObject.conversion_result;
                    _context.Sredstva.Update(kupovnoSredstvo);
                    await _context.SaveChangesAsync();
                }

                var zah = await _context.Zahtjevi
                          .Where(v => v.ZahtjevId == odobravanjeZahtjeva.ZahtjevId)
                          .FirstOrDefaultAsync();

                zah.Prihvacen             = 2;
                zah.DatumVrijemeKreiranja = DateTime.Now;
                _context.Zahtjevi.Update(zah);

                await _context.SaveChangesAsync();
            }

            var odobravanje = new OdobravanjeZahtjevaDto()
            {
                ZahtjevId = odobravanjeZahtjeva.ZahtjevId,
                Prihvacen = odobravanjeZahtjeva.Prihvacen
            };

            var odobreno = _mapper.Map <ZahtjevDto>(odobravanje);

            return(odobreno);
        }
 public async Task <ZahtjevDto> OdobriZahtjev(OdobravanjeZahtjevaDto odobravanjeZahtjeva)
 {
     return(await _service.OdobriZahtjev(odobravanjeZahtjeva));
 }