public async Task <IActionResult> Edit(string Id) { ViewData["Title"] = "Modifica Password"; PasswordEditInputModel var_InputModel = await prop_PasswordService.GetPasswordForEditingAsync(Convert.ToInt32(Id)); return(View(var_InputModel)); }
public async Task <IActionResult> Edit(PasswordEditInputModel par_InputModel) { if (ModelState.IsValid == true) { try { PasswordDetailViewModel var_Password = await prop_PasswordService.EditPasswordAsync(par_InputModel); TempData["MessaggioConfermaSalvataggio"] = "I dati sono stati salvati con sussesso"; return(RedirectToAction(nameof(Detail), new { Id = par_InputModel.Id })); } catch (PasswordImageInvalidException) { ModelState.AddModelError(nameof(PasswordEditInputModel.FilePassword), "Questa Password gia esiste"); } catch (PasswordDescrizioneDuplicataException) { ModelState.AddModelError(nameof(PasswordEditInputModel.Descrizione), "Questa Password gia esiste"); } catch (DBConcurrencyException) { ModelState.AddModelError("", "Spiacenti il salvataggio non e' andato a buon fine perche nel frattempo perche un altro utente ha aggiornato il corso. aggiornare la pagine e ripetere le modifiche."); } } ViewData["Title"] = "Modifica Password"; return(View(par_InputModel)); }
public async Task <PasswordDetailViewModel> EditPasswordAsync(PasswordEditInputModel par_InputModel) { bool bPasswordNonDuplicata = await DescrizioneDuplicataAsync(par_InputModel.Descrizione, par_InputModel.Id); if (bPasswordNonDuplicata == false) { throw new PasswordDescrizioneDuplicataException(par_InputModel.Descrizione, new Exception("errore nella creazione della password")); } string sFilePath = null; if (par_InputModel.FilePassword != null) { try { sFilePath = await par_ImagePersister.SavePasswordImageAsync(par_InputModel.Id, par_InputModel.FilePassword); } catch (System.Exception exc) { throw new PasswordImageInvalidException(par_InputModel.Id, exc); } } int var_NumRigheUpd = await db.CommandAsync($@"UPDATE Passwords SET PathFile=COALESCE({sFilePath}, PathFile), Password={par_InputModel.Password}, Descrizione={par_InputModel.Descrizione}, DataInserimento={par_InputModel.DataInserimento}, FkUtente={par_InputModel.FkUtente}, Sito={par_InputModel.Sito}, Tipo={par_InputModel.Tipo} WHERE Id={par_InputModel.Id} AND RowVersion={par_InputModel.RowVersion}"); if (var_NumRigheUpd == 0) { int var_RecordTrovato = await db.QueryScalarAsync <int>($"SELECT COUNT(*) FROM Passwords WHERE Id={par_InputModel.Id}"); if (var_RecordTrovato > 0) { throw new DBConcurrencyException("Non e' possibile effettuare l'update perche un altro utente ha effettuato delle modifiche."); } else { throw new PasswordNotFoundException(par_InputModel.Id); } } PasswordDetailViewModel var_Password = await GetPasswordAsync(par_InputModel.Id.ToString()); return(var_Password); }
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")); } }
public async Task <PasswordEditInputModel> GetPasswordForEditingAsync(int id) { IQueryable <PasswordEditInputModel> Qry_Linq = dbContext.Passwords .Where(var_password => var_password.Id == id) .Select(var_password => PasswordEditInputModel.FromEntity(var_password)) .AsNoTracking(); PasswordEditInputModel var_Password = await Qry_Linq.FirstOrDefaultAsync(); if (var_Password == null) { //logger.LogWarning("Password {id} not found", id); throw new PasswordNotFoundException(id); } return(var_Password); }
public async Task <PasswordEditInputModel> GetPasswordForEditingAsync(int id) { FormattableString query = $"SELECT Id, Password, Descrizione, DataInserimento, FkUtente, Sito, Tipo, PathFile, RowVersion FROM Passwords where Id = {id}; "; DataSet var_DataSet = await db.QueryAsync(query); var var_PasswordTable = var_DataSet.Tables[0]; if (var_PasswordTable.Rows.Count != 1) { //logger.LogWarning("Password {id} not found", id); throw new PasswordNotFoundException(id); } var var_PasswordRow = var_PasswordTable.Rows[0]; var var_PasswordEditInputModel = PasswordEditInputModel.FromDataRow(var_PasswordRow); return(var_PasswordEditInputModel); }
public async Task<PasswordDetailViewModel> EditPasswordAsync(PasswordEditInputModel par_InputModel) { PasswordDetailViewModel var_Password = await prop_PasswordService.EditPasswordAsync(par_InputModel); memoryChache.Remove($"Password{par_InputModel.Id}"); return var_Password; }