private void HandleDeleteExperiment(DeleteExperiment deleteExperiment)
        {
            Result deletionResult = _repository.DeleteExperiment(deleteExperiment);

            if (deletionResult.IsFailure)
            {
                ExperimentDeletionFailed failedExperimentDeletion =
                    new ExperimentDeletionFailed(
                        deletionResult.Error,
                        deleteExperiment.LoggedInUserId,
                        deleteExperiment.SagaId
                        );
                _kafkaProducer.Produce(failedExperimentDeletion, EXPERIMENT_TOPIC);
                return;
            }

            ExperimentDeleted deletedExperiment =
                new ExperimentDeleted(
                    deleteExperiment.Id,
                    deleteExperiment.LoggedInUserId,
                    deleteExperiment.SagaId
                    );

            _kafkaProducer.Produce(deletedExperiment, EXPERIMENT_TOPIC);
        }
        public Result DeleteExperiment(DeleteExperiment deleteExperiment)
        {
            long idToDelete = deleteExperiment.Id;

            int numberOfRemovedItems = experimentsMemoryDatabase.RemoveAll(e => e.Id == idToDelete);

            if (numberOfRemovedItems == 0)
            {
                return(Result.Fail("The experiment you are trying to delete does not exist"));
            }

            return(Result.Ok());
        }
        public IActionResult DeleteExperiment(long id)
        {
            long loggedInUserId = GetLoggedInUserIdMockUp();

            if (loggedInUserId == -1)
            {
                return(Unauthorized());
            }

            DeleteExperiment deleteExperiment = new DeleteExperiment(id, loggedInUserId);

            _kafkaProducer.Produce(deleteExperiment, EXPERIMENT_TOPIC);

            return(Ok("Currently processing your request..."));
        }