+ Update "Adherer à un groupe" method

This commit is contained in:
Djery-Tom 2020-08-20 17:21:38 +01:00
parent 5a953b33b6
commit 71ede45247
8 changed files with 95 additions and 44 deletions

View File

@ -125,24 +125,12 @@ class UserGroupController extends Controller
}
public function validateGroupDemand(Request $request)
{
$this->validate($request, [
'type' => 'required|in:creation,suppression',
]);
if ($request->type == 'creation')
return $this->validateGroupCreationDemand($request);
if ($request->type == 'suppression')
return $this->validateDeletingGroupDemand($request);
}
private function validateGroupCreationDemand(Request $request)
{
$this->validate($request, [
'id_demande' => 'required|integer|min:0|not_in:0',
'id_user' => 'required|integer|min:0|not_in:0'
]);
$demande = UsersGroupsDemandesValidation::findOrFail($request->id_demande);
if ($demande->statut != 0)
return $this->errorResponse(trans('errors.treated_group_demand'));
@ -150,6 +138,19 @@ class UserGroupController extends Controller
if ($demande->id_sponsor != $request->id_user)
return $this->errorResponse(trans('errors.not_group_sponsor'));
if ($demande->type == 'creation')
return $this->validateGroupCreationDemand($request, $demande);
if ($demande->type == 'suppression')
return $this->validateDeletingGroupDemand($request, $demande);
if ($demande->type == 'adhesion')
return $this->validateMembershipGroupDemand($request, $demande);
}
private function validateGroupCreationDemand(Request $request, UsersGroupsDemandesValidation $demande)
{
$sponsor = User::findOrFail($request->id_user);
$group = UsersGroup::findOrFail($demande->id_group);
@ -187,7 +188,6 @@ class UserGroupController extends Controller
$this->validate($request, [
'id_demande' => 'required|integer|min:0|not_in:0',
'id_user' => 'required|integer|min:0|not_in:0',
'type' => 'required|in:creation,suppression',
]);
$demande = UsersGroupsDemandesValidation::findOrFail($request->id_demande);
if ($demande->statut != 0)
@ -209,20 +209,28 @@ class UserGroupController extends Controller
$data->data = new \stdClass();;
$data->data->id = $request->id_demande;
if ($request->type == 'creation') {
if ($demande->type == 'creation') {
$this->sendPushNotificationToUser($group->createur->user_code,
trans('notifications.refused_group_validation_request', ['name' => $sponsor->lastname . ' ' . $sponsor->firstname]), $data);
return $this->successResponse(trans('messages.successful_refused_group_validation'));
}
if ($request->type == 'suppression') {
if ($demande->type == 'suppression') {
$this->sendPushNotificationToUser($group->createur->user_code,
trans('notifications.refused_group_deleting_request', ['name' => $sponsor->lastname . ' ' . $sponsor->firstname]), $data);
return $this->successResponse(trans('messages.successful_refused_group_deleting'));
}
if ($demande->type == 'adhesion') {
$user = User::findOrFail($demande->id_user);
$this->sendPushNotificationToUser($user->user_code,
trans('notifications.successful_canceled_group_membership_request', ['name' => $sponsor->lastname . ' ' . $sponsor->firstname]), $data);
return $this->successResponse(trans('messages.successful_refused_group_deleting'));
}
}
public function updateGroup(Request $request)
@ -328,7 +336,7 @@ class UserGroupController extends Controller
}
public function sendNotificationToSponsor($id_group, $id_sponsor, $sponsor_code, User $sender, $type = 'creation')
private function sendNotificationToSponsor($id_group, $id_sponsor, $sponsor_code, User $sender, $type = 'creation')
{
$demande = new UsersGroupsDemandesValidation();
$demande->id_group = $id_group;
@ -336,19 +344,32 @@ class UserGroupController extends Controller
$demande->date_creation = new \DateTime();
$demande->statut = false;
$demande->type = $type;
$demande->save();
$data = new \stdClass();
$data->screen = $type == 'creation' ? "demandeValidationGroupe" : "demandeSuppressionGroupe";
if ($type == 'creation') {
$data->screen = "demandeValidationGroupe";
$message_id = 'notifications.group_validation_request';
} else if ($type == 'suppression') {
$data->screen = "demandeSuppressionGroupe";
$message_id = 'notifications.group_deleting_request';
} else if ($type == 'adhesion') {
$demande->id_user = $sender->id;
$data->screen = "demandJoinGroup";
$message_id = 'notifications.group_membership_request';
} else {
$data->screen = "notificationview";
$message_id = 'notifications.group_deleting_request';
}
$demande->save();
$data->data = new \stdClass();
$data->data->id = $demande->id;
if ($type == 'creation')
$this->sendPushNotificationToUser($sponsor_code,
trans('notifications.group_validation_request', ['name' => $sender->lastname . ' ' . $sender->firstname]), $data);
else
$this->sendPushNotificationToUser($sponsor_code,
trans('notifications.group_deleting_request', ['name' => $sender->lastname . ' ' . $sender->firstname]), $data);
$this->sendPushNotificationToUser($sponsor_code,
trans($message_id, ['name' => $sender->lastname . ' ' . $sender->firstname]), $data);
}
public function getGroupDemand($id_demand)
@ -387,7 +408,7 @@ ug.date_creation , ug.createur , ug.sponsor1 , ug.sponsor2 , ug.sponsor3, ug.cou
$sponsor = User::where('user_code', $request->code_sponsor)->firstOrFail();
if (!in_array($sponsor->id, [$group->id_sponsor1, $group->id_sponsor2, $group->id_sponsor3]))
return $this->errorResponse(trans('errors.not_group_sponsor'));
return $this->errorResponse(trans('errors.sponsor_code_not_match'));
$user = User::findOrFail($request->id_user);
if (isset($user->group_id))
@ -403,13 +424,39 @@ ug.date_creation , ug.createur , ug.sponsor1 , ug.sponsor2 , ug.sponsor3, ug.cou
if (!($identfication instanceof Identification))
return $identfication;
// Notifier le sponsor
$this->sendNotificationToSponsor($group->id, $sponsor->id, $sponsor->user_code, $user, 'adhesion');
return $this->successResponse(trans('messages.successful_group_membership_request'));
}
private function validateMembershipGroupDemand(Request $request, UsersGroupsDemandesValidation $demande)
{
$sponsor = User::findOrFail($request->id_user);
$group = UsersGroup::findOrFail($demande->id_group);
if (!in_array($demande->id_sponsor, [$group->id_sponsor1, $group->id_sponsor2, $group->id_sponsor3]))
return $this->errorResponse(trans('errors.not_group_sponsor'));
$user = User::findOrFail($demande->id_user);
$user->group_id = $group->id;
$user->date_adhesion = new \DateTime();
$user->save();
++$group->nombre_utilisateurs;
$group->save();
// Notifier les determinants
return $this->successResponse(trans('messages.successful_group_adhesion'));
$demande->statut = true;
$demande->date_validation = new \DateTime();
$demande->save();
// Notififier l'utilisateur
$data = new \stdClass();
$data->screen = "notificationview";
$data->data = new \stdClass();;
$data->data->id = $request->id_demande;
$this->sendPushNotificationToUser($user->user_code,
trans('notifications.accepted_group_membership_request', ['name' => $sponsor->lastname . ' ' . $sponsor->firstname]), $data);
return $this->successResponse(trans('messages.successful_accepted_group_membership_request'));
}
@ -432,19 +479,8 @@ ug.date_creation , ug.createur , ug.sponsor1 , ug.sponsor2 , ug.sponsor3, ug.cou
}
private function validateDeletingGroupDemand(Request $request)
private function validateDeletingGroupDemand(Request $request, UsersGroupsDemandesValidation $demande)
{
$this->validate($request, [
'id_demande' => 'required|integer|min:0|not_in:0',
'id_user' => 'required|integer|min:0|not_in:0'
]);
$demande = UsersGroupsDemandesValidation::findOrFail($request->id_demande);
if ($demande->statut != 0)
return $this->errorResponse(trans('errors.treated_group_demand'));
if ($demande->id_sponsor != $request->id_user)
return $this->errorResponse(trans('errors.not_group_sponsor'));
$sponsor = User::findOrFail($request->id_user);
$group = UsersGroup::findOrFail($demande->id_group);

View File

@ -15,6 +15,7 @@ use Illuminate\Database\Eloquent\Model;
* @property int $id
* @property int $id_group
* @property int $id_sponsor
* @property int $id_user
* @property int $statut
* @property Carbon $date_validation
* @property Carbon $date_creation
@ -30,6 +31,7 @@ class UsersGroupsDemandesValidation extends Model
protected $casts = [
'id_group' => 'int',
'id_sponsor' => 'int',
'id_user' => 'int',
'statut' => 'int'
];
@ -41,6 +43,7 @@ class UsersGroupsDemandesValidation extends Model
protected $fillable = [
'id_group',
'id_sponsor',
'id_user',
'statut',
'date_validation',
'date_creation',

View File

@ -52,5 +52,6 @@ Paying network : :network :country',
"nano_credit_not_found" => "This nano credit request does not exist",
"nano_credit_not_individual" => "This nano credit request is not individual",
"last_nano_credit_not_refunded" => "Your last nano credit request was not refunded",
"nano_credit_already_refunded" => "Repayment of credit already made"
"nano_credit_already_refunded" => "Repayment of credit already made",
"sponsor_code_not_match" => "This sponsor code does not match to this group",
];

View File

@ -152,7 +152,7 @@ Your new identification has been taken into account. Contact an iLink World agen
Regards,
iLinkWorld team.',
'successful_user_group_modificated' => 'The group has been modified successfully. Awaiting validation from new sponsors to activate it',
'successful_group_adhesion' => 'Vous êtes désormais membre de ce groupe',
'successful_group_membership_request' => "Your membership request has been sent to the sponsor",
'successful_user_group_deleted' => 'The group will be deleted after validation of the 3 sponsors',
'successful_group_deleting' => 'Group deletion accepted. More than :count delete validation remaining | Group delete accepted. More than :count remaining delete validations',
'successful_refused_group_validation' => 'Group validation refused',
@ -208,4 +208,6 @@ Request Information:
- Credit amount: :amount
- Fees: :fees
- Net amount received: :net",
'successful_accepted_group_membership_request' => "Membership request accepted",
'successful_canceled_group_membership_request' => "Membership request refused",
];

View File

@ -6,4 +6,7 @@ return [
"accepted_group_deleting_request" => ":name has accepted your group deleting request",
"refused_group_validation_request" => ":name has refused your group validation request",
"refused_group_deleting_request" => ":name has refused your group deleting request",
"group_membership_request" => ":name has sent you a group membership request",
"accepted_group_membership_request" => ":name has accepted your group membership request",
"refused_group_membership_request" => ":name has refused your group membership request",
];

View File

@ -52,5 +52,6 @@ Réseau payeur : :network :country',
"nano_credit_not_found" => "Cette demande de nano crédit n'existe pas",
"nano_credit_not_individual" => "Cette demande de nano crédit n'est pas individuelle",
"last_nano_credit_not_refunded" => "Votre derniere demande de nano crédit n'a pas été remboursée",
"nano_credit_already_refunded" => "Remboursement de crédit deja effectué"
"nano_credit_already_refunded" => "Remboursement de crédit deja effectué",
"sponsor_code_not_match" => "Ce code sponsor ne correspond pas à ce groupe",
];

View File

@ -152,7 +152,7 @@ Votre nouvelle identification a bien été bien prise en compte. Rapprochez vous
Cordialement,
Equipe iLinkWorld.',
'successful_user_group_modificated' => 'Le groupe a été modifié avec succes. En attente de validation des nouveaux sponsors pour l\'activer',
'successful_group_adhesion' => 'Vous êtes désormais membre de ce groupe',
'successful_group_membership_request' => "Votre demande d'adhésion a été envoyé au sponsor",
'successful_user_group_deleted' => 'Le groupe sera supprimé après validation des 3 sponsors',
'successful_group_deleting' => 'Suppression du groupe acceptée. Plus que :count validation de suppression restante|Suppression du groupe acceptée. Plus que :count validations de suppression restantes',
'successful_refused_group_validation' => 'Validation du groupe refusée',
@ -208,4 +208,6 @@ Informations de la demande :
- Montant du crédit : :amount
- Frais : :fees
- Montant net à percu : :net",
'successful_accepted_group_membership_request' => "Demande d'adhésion acceptée",
'successful_canceled_group_membership_request' => "Demande d'adhésion refusée",
];

View File

@ -6,4 +6,7 @@ return [
"accepted_group_deleting_request" => ":name a accepté votre demande de suppression de groupe",
"refused_group_deleting_request" => ":name a refusé votre demande de suppression de groupe",
"refused_group_validation_request" => ":name a refusé votre demande de validation de groupe",
"group_membership_request" => ":name vous a envoyé une demande d'adhésion de groupe",
"accepted_group_membership_request" => ":name a accepté votre demande d'adhésion de groupe",
"refused_group_membership_request" => ":name a refusé votre demande d'adhésion de groupe",
];