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();
            }
        }
Пример #2
0
        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 }));
            }
        }