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 <IdentityResult> CreateAsync(ApplicationUser user, CancellationToken token) { int affectedRows = await db.CommandAsync($"INSERT INTO AspNetUsers (Id, UserName, NormalizedUserName, Email, NormalizedEmail, EmailConfirmed, PasswordHash, SecurityStamp, ConcurrencyStamp, PhoneNumber, PhoneNumberConfirmed, TwoFactorEnabled, LockoutEnd, LockoutEnabled, AccessFailedCount, FullName) VALUES ({user.Id}, {user.UserName}, {user.NormalizedUserName}, {user.Email}, {user.NormalizedEmail}, {user.EmailConfirmed}, {user.PasswordHash}, {user.SecurityStamp}, {user.ConcurrencyStamp}, {user.PhoneNumber}, {user.PhoneNumberConfirmed}, {user.TwoFactorEnabled}, {user.LockoutEnd}, {user.LockoutEnabled}, {user.AccessFailedCount}, {user.FullName})", token); if (affectedRows > 0) { return(IdentityResult.Success); } var error = new IdentityError { Description = "Could not insert user" }; return(IdentityResult.Failed(error)); }
public async Task DeleteLessonAsync(LessonDeleteInputModel inputModel) { int affectedRows = await db.CommandAsync($"DELETE FROM Lessons WHERE Id={inputModel.Id}"); if (affectedRows == 0) { throw new LessonNotFoundException(inputModel.Id); } }
public async Task <CourseDetailViewModel> EditCourseAsync(CourseEditInputModel inputModel) { try { string imagePath = null; if (inputModel.Image != null) { imagePath = await imagePersister.SaveCourseImageAsync(inputModel.Id, inputModel.Image); } int affectedRows = await db.CommandAsync($"UPDATE Courses SET ImagePath=COALESCE({imagePath}, ImagePath), Title={inputModel.Title}, Description={inputModel.Description}, Email={inputModel.Email}, CurrentPrice_Currency={inputModel.CurrentPrice.Currency.ToString()}, CurrentPrice_Amount={inputModel.CurrentPrice.Amount}, FullPrice_Currency={inputModel.FullPrice.Currency.ToString()}, FullPrice_Amount={inputModel.FullPrice.Amount} WHERE Id={inputModel.Id} AND Status<>{nameof(CourseStatus.Deleted)} AND RowVersion={inputModel.RowVersion}"); if (affectedRows == 0) { bool courseExists = await db.QueryScalarAsync <bool>($"SELECT COUNT(*) FROM Courses WHERE Id={inputModel.Id} AND Status<>{nameof(CourseStatus.Deleted)}"); if (courseExists) { throw new OptimisticConcurrencyException(); } else { throw new CourseNotFoundException(inputModel.Id); } } } catch (ConstraintViolationException exc) { throw new CourseTitleUnavailableException(inputModel.Title, exc); } catch (ImagePersistenceException exc) { throw new CourseImageInvalidException(inputModel.Id, exc); } CourseDetailViewModel course = await GetCourseAsync(inputModel.Id); return(course); }