public override async Task <ServiceResult> Insert(PacijentUpsertDto dtoForCreation) { var zdravstvenaKnjizica = await _dbContext.ZdravstvenaKnjizica .Include(x => x.LicniPodaci) .FirstOrDefaultAsync(x => x.Id == dtoForCreation.BrojZdravstveneKnjizice); var validInput = await ValidateUpsertData(dtoForCreation, zdravstvenaKnjizica); if (!validInput.Succeeded) { return(ServiceResult.WithStatusCode(validInput.StatusCode, validInput.Message)); } var korisnickiNalog = _mapper.Map <KorisnickiNalog>(dtoForCreation.KorisnickiNalog); if (dtoForCreation.KorisnickiNalog.ConfirmPassword != dtoForCreation.KorisnickiNalog.Password) { return(ServiceResult.BadRequest("Lozinke se ne podudaraju")); } var addedPersonId = await _faceRecognitionService.AddFaceForUser(dtoForCreation.ProfilePicture, dtoForCreation.KorisnickiNalog.Username); korisnickiNalog.PasswordSalt = _securityService.GenerateSalt(); korisnickiNalog.PasswordHash = _securityService.GenerateHash(korisnickiNalog.PasswordSalt, dtoForCreation.KorisnickiNalog.Password); korisnickiNalog.DateCreated = DateTime.Now; korisnickiNalog.LastOnline = DateTime.Now; korisnickiNalog.FaceId = addedPersonId.ToString(); await _dbContext.KorisnickiNalozi.AddAsync(korisnickiNalog); await _dbContext.SaveChangesAsync(); //Adding user to Pacijent role var pacijentRole = await _dbContext.Roles.FirstOrDefaultAsync(x => x.Naziv == "Pacijent"); await _dbContext.RolesKorisnickiNalozi.AddAsync(new RoleKorisnickiNalog { KorisnickiNalogId = korisnickiNalog.Id, RoleId = pacijentRole.Id }); await _dbContext.SaveChangesAsync(); var pacijent = new Pacijent { KorisnickiNalogId = korisnickiNalog.Id, ZdravstvenaKnjizicaId = zdravstvenaKnjizica.Id }; await _dbContext.AddAsync(pacijent); await _dbContext.SaveChangesAsync(); var zdravstvenaKnjizicaFromDb = await _dbContext.ZdravstvenaKnjizica .Include(x => x.LicniPodaci).FirstOrDefaultAsync(x => x.Id == pacijent.ZdravstvenaKnjizicaId); if (zdravstvenaKnjizicaFromDb != null) { zdravstvenaKnjizicaFromDb.LicniPodaci.ProfilePicture = dtoForCreation.ProfilePicture; _dbContext.Update(zdravstvenaKnjizicaFromDb.LicniPodaci); await _dbContext.SaveChangesAsync(); } return(ServiceResult.OK(_mapper.Map <PacijentDtoLL>(pacijent))); }
public override async Task <ServiceResult> Update(int id, LicniPodaciUpsertDto request) { if (!await _authService.IsAuthenticated()) { return(ServiceResult.Unauthorized()); } if (await ValidateModel(request, id) is { } validationResult&& !validationResult.Succeeded) { return(ServiceResult.WithStatusCode(validationResult.StatusCode, validationResult.Message)); } var entity = await _dbContext.LicniPodaci.FindAsync(id); if (entity == null) { return(ServiceResult.NotFound("Licni podaci nisu pronadjeni")); } if (_authService.UserIsPacijent()) { var pacijent = await _authService.GetCurrentLoggedInPacijent(); if (pacijent == null) { return(ServiceResult.BadRequest()); } var korisnickiNalog = await _dbContext.KorisnickiNalozi.FindAsync(pacijent.KorisnickiNalogId); if (request.ProfilePicture != null && request.ProfilePicture.Any()) { if (entity.ProfilePicture != null && korisnickiNalog.FaceId != null && (!entity.ProfilePicture?.SequenceEqual(request.ProfilePicture) ?? false)) { await _faceRecognitionService.AddFaceForUser(request.ProfilePicture, korisnickiNalog.Username, Guid.Parse(korisnickiNalog.FaceId), true); } else { var addedPersonId = await _faceRecognitionService.AddFaceForUser(request.ProfilePicture, korisnickiNalog.Username); korisnickiNalog.FaceId = addedPersonId?.ToString(); _dbContext.Update(korisnickiNalog); await _dbContext.SaveChangesAsync(); } } } if (!_dbContext.Gradovi.Any(x => x.Id == request.GradId)) { return(ServiceResult.NotFound($"Grad sa ID-em {request.GradId} nije pronadjen")); } await Task.Run(() => { _mapper.Map(request, entity); _dbContext.LicniPodaci.Update(entity); }); await _dbContext.SaveChangesAsync(); return(new ServiceResult(_mapper.Map <LicniPodaciDto>(entity))); }