Files
michaelschiemer/src/Application/Contact/ShowContact.php
Michael Schiemer 5050c7d73a docs: consolidate documentation into organized structure
- Move 12 markdown files from root to docs/ subdirectories
- Organize documentation by category:
  • docs/troubleshooting/ (1 file)  - Technical troubleshooting guides
  • docs/deployment/      (4 files) - Deployment and security documentation
  • docs/guides/          (3 files) - Feature-specific guides
  • docs/planning/        (4 files) - Planning and improvement proposals

Root directory cleanup:
- Reduced from 16 to 4 markdown files in root
- Only essential project files remain:
  • CLAUDE.md (AI instructions)
  • README.md (Main project readme)
  • CLEANUP_PLAN.md (Current cleanup plan)
  • SRC_STRUCTURE_IMPROVEMENTS.md (Structure improvements)

This improves:
 Documentation discoverability
 Logical organization by purpose
 Clean root directory
 Better maintainability
2025-10-05 11:05:04 +02:00

76 lines
2.2 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Application\Contact;
use App\Framework\Attributes\Route;
use App\Framework\CommandBus\CommandBus;
use App\Framework\Http\Method;
use App\Framework\Meta\MetaData;
use App\Framework\Meta\StaticPageMetaResolver;
use App\Framework\OpenApi\Attributes\ApiEndpoint;
use App\Framework\OpenApi\Attributes\ApiRequestBody;
use App\Framework\OpenApi\Attributes\ApiResponse;
use App\Framework\Router\ActionResult;
use App\Framework\Router\Result\Redirect;
use App\Framework\Router\Result\ViewResult;
use App\Framework\Router\WebRoutes;
final readonly class ShowContact
{
#[Route(path: '/kontakt', name: WebRoutes::CONTACT)]
public function __invoke(): ViewResult
{
return new ViewResult(
'contact',
new StaticPageMetaResolver(
'Kontakt',
'Kontaktseite!',
)(),
);
}
#[Route(path: '/kontakt', method: Method::POST)]
#[ApiEndpoint(
summary: 'Submit contact form',
description: 'Submit a contact form message',
tags: ['Contact'],
)]
#[ApiRequestBody(
description: 'Contact form data',
required: true,
example: [
'name' => 'John Doe',
'email' => 'john@example.com',
'subject' => 'Question about services',
'message' => 'I would like to know more about your services.',
],
)]
#[ApiResponse(
statusCode: 200,
description: 'Contact form submitted successfully',
example: ['success' => true, 'message' => 'Thank you for your message'],
)]
#[ApiResponse(
statusCode: 400,
description: 'Validation error - Invalid form data',
)]
public function senden(ContactRequest $request, CommandBus $commandBus): ActionResult
{
$command = new StoreContact(
$request->email,
$request->name,
$request->subject,
$request->message,
);
$commandBus->dispatch($command);
// Success! Clear form data and redirect
return new ViewResult('contact-success', new MetaData(
title: 'Kontakt | <NAME>',
), data: ['message' => 'Vielen Dank für Ihre Nachricht!']);
}
}