public async Task <bool> DeleteLaboratryBookAsync(DeleteLaboratoryBookOptions options) { var deleteCommandString = GetDeleteBookCommandString(options.EmbeddedResourcePath); deleteCommandString = SetProperLaboratoryBookNameAndId( deleteCommandString, options.LaboratoryBookName, options.LaboratoryBookId ); var connection = new MySqlConnection(options.ConnectionString); var command = new MySqlCommand(deleteCommandString, connection); try { await connection.OpenAsync(); await command.ExecuteNonQueryAsync(); return(true); } finally { await connection.CloseAsync(); command?.Dispose(); } }
public async Task <IActionResult> DeleteLaboratoryBook([FromBody] DeleteLaboratoryBookModel deleteModel) { if (!ModelState.IsValid) { return(BadRequest(new { errorMessage = "Model state is invalid" })); } try { var connectionString = _configuration .GetConnectionString("LaboratoryBookConnectionString"); var userId = HttpContext .User .Claims .First(claim => claim.Type == "UserId") .Value; var creatorId = await LaboratoryBookHelper.GetLaboratoryBookCreatorAsync( connectionString, deleteModel.LaboratoryBookName ); if (creatorId != int.Parse(userId)) { return(StatusCode( StatusCodes.Status403Forbidden, new { errorMessage = "You are not creator of this laboratory book" } )); } var userStatus = HttpContext .User .Claims .First(claim => claim.Type == "UserStatus") .Value; var user = (Administer)LaboratoryBookHelper.CurrentUser(userStatus); var deleteLaboratoryBookOptions = new DeleteLaboratoryBookOptions { ConnectionString = connectionString, EmbeddedResourcePath = "LaboratoryBookWebApp.TextFiles.DeleteLaboratoryBookTemplate.txt", LaboratoryBookId = LaboratoryBookHelper.GetLaboratoryBookId( connectionString, deleteModel.LaboratoryBookName), LaboratoryBookName = deleteModel.LaboratoryBookName, UserId = int.Parse(userId) }; await user.DeleteLaboratryBookAsync(deleteLaboratoryBookOptions); return(Ok()); } catch (Exception exception) { return(StatusCode( StatusCodes.Status500InternalServerError, new { errorMessage = exception.Message })); } }