<?php
namespace App\Entity\User;
use ApiPlatform\Core\Annotation\ApiResource;
use App\Controller\Api\DownloadPersonalData;
use App\Controller\Api\InitializeUserPassword;
use App\Controller\Api\ResetUserPassword;
use App\Controller\Api\SocialNetworkUserCheck;
use App\Controller\Api\SoftUserDelete;
use App\Controller\Api\SendFeedsUserToCrm;
use App\Controller\Api\UpdateOptinUserFromSalesforce;
use App\Controller\Api\UpdateOptinUserFromIsoskele;
use App\Dto\OptinBrandChange;
use App\Dto\OptinCustomerChange;
use App\Dto\PasswordChange;
use App\Dto\UserPassword;
use App\Repository\User\ConsumerRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity(repositoryClass=ConsumerRepository::class)
* @UniqueEntity("email", message="Cet email est déjà utilisé.")
*
* @ApiResource(
* shortName="User",
* attributes={
* "normalization_context"={"groups"={
* "User:output",
* "User:io",
* "ParticipationStep:io",
* "SponsorshipRequest:io",
* }},
* "denormalization_context"={"groups"={
* "User:input",
* "User:io",
* "reset_password",
* "patch_optin_brand_phone",
* "patch_optin_isoskele",
* "initialize_password",
* "ParticipationStep:io",
* "SponsorshipRequest:io",
* }}
* },
* collectionOperations={
* "get"={
* "access_control"="is_granted('ROLE_USER')",
* },
* "post"={
* "validation_groups"={"Default", "Create"}
* },
* "public-post"={
* "method"="POST",
* "path"="/public/users",
* "access_control"="is_granted('ROLE_PUBLIC')",
* "validation_groups"={"Default", "Create"}
* },
* "get_user_facebook"={
* "method"="POST",
* "validation_groups"={"get_user_facebook"},
* "path"="/public/users/facebook_check",
* "controller"=SocialNetworkUserCheck::class,
* }
* },
* itemOperations={
* "delete"={
* "access_control"="is_granted('ROLE_ADMIN')",
* },
* "get"={
* "access_control"="is_granted('ROLE_USER')",
* },
* "put"={
* "access_control"="is_granted('ROLE_USER')",
* "validation_groups"={"Default", "Edit"}
* },
* "reset-password-put"={
* "method"="PUT",
* "path"="/public/users/{userId}/tokens/{tokenId}",
* "access_control"="is_granted('ROLE_PUBLIC')",
* "validation_groups"={"reset_password"},
* "controller"=ResetUserPassword::class,
* "defaults"={"_api_receive"=false},
* },
* "initialize-password-put"={
* "method"="PUT",
* "path"="/public/users/password-initialize/{userId}/tokens/{tokenId}",
* "access_control"="is_granted('ROLE_PUBLIC')",
* "validation_groups"={"initialize_password"},
* "controller"=InitializeUserPassword::class,
* "defaults"={"_api_receive"=false},
* },
* "soft-delete-post"={
* "method"="POST",
* "path"="/users/softdelete/{userId}/{templateId}",
* "access_control"="is_granted('ROLE_USER')",
* "controller"=SoftUserDelete::class,
* "defaults"={"_api_receive"=false},
* },
* "send-feeds-crm-post"={
* "method"="POST",
* "path"="/crm/users/{id}",
* "access_control"="is_granted('ROLE_USER')",
* "controller"=SendFeedsUserToCrm::class,
* "defaults"={"_api_receive"=false},
* },
* "download-personnal-data"={
* "method"="GET",
* "path"="/users/download-personal-data/{id}",
* "access_control"="is_granted('ROLE_USER')",
* "controller"=DownloadPersonalData::class,
* "defaults"={"_api_receive"=false},
* },
* "emailcheck-password"={
* "method"="PUT",
* "input"=UserPassword::class,
* "path"="/users/emailcheck/{id}",
* },
* "password-change"={
* "method"="PUT",
* "input"=PasswordChange::class,
* "path"="/users/passwordchange/{id}",
* },
* "update-optin-from-salesforce-api"={
* "method"="PATCH",
* "path"="/salesforce/users/{id}",
* "access_control"="is_granted('ROLE_USER')",
* "controller"=UpdateOptinUserFromSalesforce::class,
* "validation_groups"={"patch_optin_brand_phone"},
* "defaults"={"_api_receive"=false},
* },
* "update-optin-from-isoskele-api"={
* "method"="PATCH",
* "path"="/isoskele/users/{id}",
* "access_control"="is_granted('ROLE_USER')",
* "controller"=UpdateOptinUserFromIsoskele::class,
* "validation_groups"={"patch_optin_isoskele"},
* "defaults"={"_api_receive"=false},
* },
* }
* )
*/
class Consumer extends User
{
}