public async Task <ServiceResult> Update(int id, RadnikUpsertDto radnikDto)
        {
            if (!_dbContext.StacionarnaOdeljenja.Any(x => x.Id == radnikDto.StacionarnoOdeljenjeId))
            {
                return(ServiceResult.NotFound($"Stacionarno odeljenje sa ID-em {radnikDto.StacionarnoOdeljenjeId} nije pronadjeno"));
            }

            var entity = await _dbContext.Radnici
                         .Include(x => x.KorisnickiNalog)
                         .Include(x => x.LicniPodaci)
                         .FirstOrDefaultAsync(x => x.Id == id);

            if (entity == null)
            {
                return(ServiceResult.NotFound($"Radnik sa ID-em {id} nije pronadjen"));
            }

            await _korisnikService.Update(entity.KorisnickiNalogId, radnikDto.KorisnickiNalog);

            await _licniPodaciService.Update(entity.LicniPodaciId, radnikDto.LicniPodaci);

            await Task.Run(() =>
            {
                entity.StacionarnoOdeljenjeId = radnikDto.StacionarnoOdeljenjeId;

                _dbContext.Update(entity);
            });

            await _dbContext.SaveChangesAsync();

            return(ServiceResult.OK(entity));
        }
        public async Task <ServiceResult> Insert(RadnikUpsertDto radnikDto)
        {
            if (!await _dbContext.StacionarnaOdeljenja.AnyAsync(x => x.Id == radnikDto.StacionarnoOdeljenjeId))
            {
                return(ServiceResult.NotFound($"Stacionarno odeljenje sa ID-em {radnikDto.StacionarnoOdeljenjeId} nije pronadjeno"));
            }

            var licniPodaciResultTemp = await _licniPodaciService.Insert(radnikDto.LicniPodaci);

            if (!licniPodaciResultTemp.Succeeded)
            {
                return(ServiceResult.WithStatusCode(licniPodaciResultTemp.StatusCode, licniPodaciResultTemp.Message));
            }
            var licniPodaciResult = licniPodaciResultTemp.Data as LicniPodaciDto;

            var korisnickiNalogResultTemp = await _korisnikService.Insert(radnikDto.KorisnickiNalog);

            if (!korisnickiNalogResultTemp.Succeeded)
            {
                return(ServiceResult.WithStatusCode(korisnickiNalogResultTemp.StatusCode, korisnickiNalogResultTemp.Message));
            }
            var korisnickiNalogResult = korisnickiNalogResultTemp.Data as KorisnickiNalogDtoLL;

            var radnik = new Radnik
            {
                KorisnickiNalogId      = korisnickiNalogResult.Id,
                LicniPodaciId          = licniPodaciResult.Id,
                StacionarnoOdeljenjeId = radnikDto.StacionarnoOdeljenjeId
            };

            await _dbContext.AddAsync(radnik);

            await _dbContext.SaveChangesAsync();

            return(ServiceResult.OK(radnik));
        }