public async Task <ActionResult <HateoasResponse> > RemoveExerciseFromRoutine(Guid id)
        {
            try
            {
                RemoveExerciseFromRoutineCommand command = new(id);

                bool result = await _mediator.Send(command);

                return(Ok(_sender.SendResult(new { ExerciseRemoved = result }, GenericLinks.GetRoutineLinks(), "The exercise has been removed!")));
            }
            catch (Exception ex)
            {
                var errorResponse = _sender.SendError(ex, GenericLinks.GetRoutineLinks());

                Response.StatusCode = errorResponse.StatusCode;

                return(errorResponse);
            }
        }
        public async Task <ActionResult <HateoasResponse> > SetDone(SetDoneRequest request)
        {
            try
            {
                SetDoneCommand command = new(request);

                bool result = await _mediator.Send(command);

                return(Ok(_sender.SendResult(new { SetDoneCreated = result }, GenericLinks.GetRoutineLinks(), "The set done has been registered!")));
            }
            catch (Exception ex)
            {
                var errorResponse = _sender.SendError(ex, GenericLinks.GetRoutineLinks());

                Response.StatusCode = errorResponse.StatusCode;

                return(errorResponse);
            }
        }
        public async Task <ActionResult <HateoasResponse> > AddExerciseToRoutine(AddExerciseToRoutineRequest request)
        {
            try
            {
                AddExerciseToRoutineCommand command = new(request);

                bool result = await _mediator.Send(command);

                return(Ok(_sender.SendResult(new { ExerciseCreated = result }, GenericLinks.GetRoutineLinks(), "The exercise has been added to your Routine!")));
            }
            catch (Exception ex)
            {
                var errorResponse = _sender.SendError(ex, GenericLinks.GetRoutineLinks());

                Response.StatusCode = errorResponse.StatusCode;

                return(errorResponse);
            }
        }
        public async Task <ActionResult <HateoasResponse> > GetExerciseToDo()
        {
            try
            {
                GetExerciseToDoQuery query = new ();

                var result = await _mediator.Send(query);

                string message = (result is not null) ? $"You have to do the {result.Name}" : "You are done for today, go and get some rest!";

                return(Ok(_sender.SendResult(result, GenericLinks.GetRoutineLinks(), message)));
            }
            catch (Exception ex)
            {
                var errorResponse = _sender.SendError(ex, GenericLinks.GetRoutineLinks());

                Response.StatusCode = errorResponse.StatusCode;

                return(errorResponse);
            }
        }