Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
kohinos-tav
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
3
Merge Requests
3
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
agplv3
kohinos-tav
Commits
3ae1d424
Commit
3ae1d424
authored
Nov 25, 2022
by
Damien Moulard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
save transaction & send mail for insufficient funds
parent
2fa7b56d
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
91 additions
and
16 deletions
+91
-16
UserAdherentController.php
src/Controller/UserAdherentController.php
+2
-2
UserController.php
src/Controller/UserController.php
+73
-14
insufficient_funds.html.twig
...tes/themes/kohinos/email/tav/insufficient_funds.html.twig
+16
-0
No files found.
src/Controller/UserAdherentController.php
View file @
3ae1d424
...
@@ -174,8 +174,8 @@ class UserAdherentController extends FluxController
...
@@ -174,8 +174,8 @@ class UserAdherentController extends FluxController
$plainCode
=
$data
->
getPaymentCode
();
$plainCode
=
$data
->
getPaymentCode
();
if
(
is_numeric
(
$plainCode
)
&&
strlen
(
$plainCode
)
>=
4
&&
strlen
(
$plainCode
)
<=
8
)
{
if
(
is_numeric
(
$plainCode
)
&&
strlen
(
$plainCode
)
>=
4
&&
strlen
(
$plainCode
)
<=
8
)
{
$encoded
=
$encoder
->
encodePassword
(
$this
->
getUser
(),
$plainCode
);
$encoded
=
crypt
(
$plainCode
,
$this
->
getUser
()
->
getSalt
()
);
printf
(
$encoded
);
$adherent
->
setPaymentCode
(
$encoded
);
$adherent
->
setPaymentCode
(
$encoded
);
$this
->
em
->
flush
();
$this
->
em
->
flush
();
...
...
src/Controller/UserController.php
View file @
3ae1d424
...
@@ -9,6 +9,7 @@ use App\Entity\GlobalParameter;
...
@@ -9,6 +9,7 @@ use App\Entity\GlobalParameter;
use
App\Entity\Payment
;
use
App\Entity\Payment
;
use
App\Entity\Prestataire
;
use
App\Entity\Prestataire
;
use
App\Entity\User
;
use
App\Entity\User
;
use
App\Entity\TransactionAdherentPrestataire
;
use
App\Enum\MoyenEnum
;
use
App\Enum\MoyenEnum
;
use
App\Form\Type\CotiserFormType
;
use
App\Form\Type\CotiserFormType
;
use
App\Form\Type\DonAdherentFormType
;
use
App\Form\Type\DonAdherentFormType
;
...
@@ -24,10 +25,12 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
...
@@ -24,10 +25,12 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use
Symfony\Component\HttpFoundation\JsonResponse
;
use
Symfony\Component\HttpFoundation\JsonResponse
;
use
Symfony\Component\HttpFoundation\Request
;
use
Symfony\Component\HttpFoundation\Request
;
use
Symfony\Component\HttpFoundation\Response
;
use
Symfony\Component\HttpFoundation\Response
;
use
Symfony\Component\HttpFoundation\Session\SessionInterface
;
use
Symfony\Component\Routing\Annotation\Route
;
use
Symfony\Component\Routing\Annotation\Route
;
use
Symfony\Component\Security\Core\Security
;
use
Symfony\Component\Security\Core\Security
;
use
Symfony\Component\Translation\TranslatorInterface
;
use
Symfony\Component\Translation\TranslatorInterface
;
use
Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface
;
use
Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface
;
use
Twig\Environment
;
class
UserController
extends
AbstractController
class
UserController
extends
AbstractController
{
{
...
@@ -36,14 +39,28 @@ class UserController extends AbstractController
...
@@ -36,14 +39,28 @@ class UserController extends AbstractController
private
$security
;
private
$security
;
private
$operationUtils
;
private
$operationUtils
;
private
$cotisationUtils
;
private
$cotisationUtils
;
private
$session
;
public
function
__construct
(
EntityManagerInterface
$em
,
TranslatorInterface
$translator
,
Security
$security
,
OperationUtils
$operationUtils
,
CotisationUtils
$cotisationUtils
)
private
$mailer
;
{
private
$templating
;
public
function
__construct
(
EntityManagerInterface
$em
,
TranslatorInterface
$translator
,
Security
$security
,
OperationUtils
$operationUtils
,
CotisationUtils
$cotisationUtils
,
SessionInterface
$session
,
\Swift_Mailer
$mailer
,
Environment
$templating
)
{
$this
->
em
=
$em
;
$this
->
em
=
$em
;
$this
->
translator
=
$translator
;
$this
->
translator
=
$translator
;
$this
->
security
=
$security
;
$this
->
security
=
$security
;
$this
->
operationUtils
=
$operationUtils
;
$this
->
operationUtils
=
$operationUtils
;
$this
->
cotisationUtils
=
$cotisationUtils
;
$this
->
cotisationUtils
=
$cotisationUtils
;
$this
->
session
=
$session
;
$this
->
mailer
=
$mailer
;
$this
->
templating
=
$templating
;
}
}
/**
/**
...
@@ -264,14 +281,9 @@ class UserController extends AbstractController
...
@@ -264,14 +281,9 @@ class UserController extends AbstractController
}
}
// Check validation code
// Check validation code
$encoded_input
=
$encoder
->
encodePassword
(
$adherent
->
getUser
(),
$input_code
);
// TODO as we use password salt, must change payment code if password changes
printf
(
'<p>encoded_input</p>'
);
$encoded_input
=
crypt
(
$input_code
,
$adherent
->
getUser
()
->
getSalt
());
printf
(
$encoded_input
);
if
(
!
hash_equals
(
$adherent_code
,
$encoded_input
))
{
printf
(
'<p>adherent_code</p>'
);
printf
(
$adherent_code
);
if
(
$encoded_input
!=
$adherent_code
)
{
// if bad validation code
$this
->
addFlash
(
$this
->
addFlash
(
'error'
,
'error'
,
$this
->
translator
->
trans
(
'Code incorrect'
)
$this
->
translator
->
trans
(
'Code incorrect'
)
...
@@ -280,13 +292,60 @@ class UserController extends AbstractController
...
@@ -280,13 +292,60 @@ class UserController extends AbstractController
goto
end
;
goto
end
;
}
}
// TODO: Check has enough
// Check adherent has enough funds
$balance
=
$adherent
->
getEmlcAccount
()
->
getBalance
();
$transaction_amount
=
floatval
(
$data
[
"montant"
]);
if
(
$balance
<
$transaction_amount
)
{
// Send mail for insufficient funds
$subject
=
'Votre tentative de paiement en Monnaie Locale Solidaire : solde insuffisant !'
;
$mail
=
(
new
\Swift_Message
(
$subject
))
->
setFrom
(
$this
->
em
->
getRepository
(
GlobalParameter
::
class
)
->
val
(
GlobalParameter
::
MLC_NOTIF_EMAIL
))
->
setTo
(
$adherent
->
getUser
()
->
getEmail
())
->
setBody
(
$this
->
templating
->
render
(
'@kohinos/email/tav/insufficient_funds.html.twig'
,
[
'subject'
=>
$subject
,
'montant'
=>
$transaction_amount
,
]
),
'text/html'
);
$this
->
mailer
->
send
(
$mail
);
$this
->
addFlash
(
'error'
,
$this
->
translator
->
trans
(
'Solde de l\'habitant insuffisant'
)
);
return
$this
->
redirectToRoute
(
'index'
);
}
// Save transaction
$flux
=
new
TransactionAdherentPrestataire
();
$flux
->
setExpediteur
(
$adherent
);
$presta
=
$this
->
session
->
get
(
'_prestagere'
);
$presta
=
$this
->
em
->
getRepository
(
Prestataire
::
class
)
->
findOneById
(
$presta
->
getId
());
$flux
->
setDestinataire
(
$presta
);
$flux
->
setOperateur
(
$this
->
security
->
getUser
());
$flux
->
setMontant
(
$transaction_amount
);
$flux
->
setMoyen
(
MoyenEnum
::
MOYEN_EMLC
);
$now
=
(
new
\Datetime
(
'now'
))
->
format
(
'd/m/Y H:i:s'
);
$flux
->
setReference
(
'Achat en Monnaie Solidaire du '
.
$now
);
$this
->
em
->
persist
(
$flux
);
$this
->
operationUtils
->
executeOperations
(
$flux
);
$this
->
em
->
flush
();
// TODO : ifok save transfer (transaction?)
$this
->
addFlash
(
$this
->
addFlash
(
'success'
,
'success'
,
$this
->
translator
->
trans
(
'
Bravo
!'
)
$this
->
translator
->
trans
(
'
Transaction réussie
!'
)
);
);
return
$this
->
redirectToRoute
(
'index'
);
}
else
{
}
else
{
$this
->
addFlash
(
$this
->
addFlash
(
'error'
,
'error'
,
...
...
templates/themes/kohinos/email/tav/insufficient_funds.html.twig
0 → 100644
View file @
3ae1d424
{%
extends
'@kohinos/email/email_layout.html.twig'
%}
{%
set
title
%}{%
spaceless
%}
{{
subject
}}
{%
endspaceless
%}
{%
endset
%}
{%
block
content
%}
<h2
style=
"font-size: 18px; color: #111111; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-weight: bold; line-height: 1.2em; margin: 40px 0 10px;"
>
{{
'Solde insuffisant'
|
trans
}}
</h2><br/>
<p>
Une transaction d'un montant de
{{
montant
|
number_format
(
2
)
}}
vous a été refusée pour cause de solde insuffisant.
</p>
{%
endblock
%}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment