public async Task <PasswordDetailViewModel> EditPasswordAsync(PasswordEditInputModel par_InputModel) { string sDescrizione = par_InputModel.Descrizione; bool bPasswordNonDuplicata = await DescrizioneDuplicataAsync(sDescrizione, par_InputModel.Id); if (bPasswordNonDuplicata == true) { Passwords var_Password = await dbContext.Passwords.FindAsync(par_InputModel.Id); var_Password.ChangePassword(par_InputModel.Password); var_Password.Descrizione = par_InputModel.Descrizione; var_Password.DataInserimento = par_InputModel.DataInserimento; var_Password.FkUtente = par_InputModel.FkUtente; var_Password.Sito = par_InputModel.Sito; var_Password.Tipo = par_InputModel.Tipo; dbContext.Entry(var_Password).Property(var_Password => var_Password.RowVersion).OriginalValue = par_InputModel.RowVersion; if (par_InputModel.FilePassword != null) { try { string sFilePath = await par_ImagePersister.SavePasswordImageAsync(par_InputModel.Id, par_InputModel.FilePassword); var_Password.PathFile = sFilePath; } catch (System.Exception exc) { throw new PasswordImageInvalidException(par_InputModel.Id, exc); } } try { await dbContext.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { throw new DBConcurrencyException("Non e' possibile effettuare l'update perche un altro utente ha effettuato delle modifiche."); } PasswordDetailViewModel var_PasswordDetailViewModel = PasswordDetailViewModel.FromEntity(var_Password); return(var_PasswordDetailViewModel); } else { throw new PasswordDescrizioneDuplicataException(sDescrizione, new Exception("errore nella creazione della password")); } }