<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
class UserController extends AbstractController {
/**
* Zasób ustawia wartości filtra klientów na podstawie formularza
* @Route("admin/setUserFilters", name="post-userFilters", methods={"POST"})
* @param \Doctrine\ORM\EntityManagerInterface $EM
* @param \Symfony\Component\HttpFoundation\Request $zadanie
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
public function postUpdateUserFilters(\Doctrine\ORM\EntityManagerInterface $EM, \Symfony\Component\HttpFoundation\Request $zadanie): \Symfony\Component\HttpFoundation\RedirectResponse {
$filter = $this->getUser()->getUserFilters();
if (!$filter)
$filter = new \App\Entity\UsersFilter ();
$filter->setCsa($zadanie->get("csa"));
$filter->setWlasciciel($zadanie->get("nazwa"));
$filter->setDomena($zadanie->get("domena"));
$filter->setPozycjaKontraktu($zadanie->get("pozycjaKontraktu"));
$filter->setNipPesel($zadanie->get("nipPesel"));
$filter->setNieZaplacone(!($zadanie->get("nieZaplacone", "false") == "false"));
if ($zadanie->get("dataOd", "") == "") {
$filter->setDataOd(null);
} else {
$filter->setDataOd(new \DateTime($zadanie->get("dataOd")));
}
if ($zadanie->get("dataDo", "") == "") {
$filter->setDataDo(null);
} else {
$filter->setDataDo(new \DateTime($zadanie->get("dataDo")));
}
$filter->setNumerDokumentu($zadanie->get("numerDokumentu"));
$filter->setUser($this->getUser());
$EM->persist($filter);
$EM->flush();
return $this->redirectToRoute("users_list");
}
/**
* Zasób renderuje stronę z listą urzytkowników
* @Route("/admin/usersList", name="users_list")
* @param \App\Repository\UserRepository $UR
* @return Response
*/
public function usersList(\App\Repository\UserRepository $UR): Response {
return $this->render('usersList.html.twig', [
'users' => $UR->findByFilters($this->getUser()->getUserFilters()),
'admin' => $this->getUser()
]);
}
/**
* Zasób renderuje strone z formularze edycji encji User
* @Route ("/admin/userEdit/{userId}", name="get_user_edit", methods={"GET"})
* @param \App\Repository\UserRepository $UR
* @param \App\Repository\KrajRepository $KR
* @param int $userId
* @return Response
*/
public function getUserEdit(\App\Repository\UserRepository $UR, \App\Repository\KrajRepository $KR, int $userId): Response {
$user = $UR->find($userId);
return $this->render("userEdit.html.twig", [
"user" => $user,
"kraje" => $KR->findBy([], ["nazwa" => "ASC"])
]);
}
/**
* Zasób uaktualnia encję usera na podstawie formularza i przekierowywuje do zasobu /admin/userEdit/{userId} dla metody GET
* @Route ("/admin/userEdit/{userId}", name="post_user_edit", methods={"POST"})
* @param \Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface $UPHI
* @param \Doctrine\ORM\EntityManagerInterface $EM
* @param \Symfony\Component\HttpFoundation\Request $zadanie
* $param int $userId
* @return Response
*/
public function postUserEdit(\Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface $UPHI, \Doctrine\ORM\EntityManagerInterface $EM, \Symfony\Component\HttpFoundation\Request $zadanie, int $userId): Response {
$user = $EM->getRepository(\App\Entity\User::class)->find($userId);
if ($user) {
$user->setEmail($zadanie->get("email"));
if ($zadanie->get("emailFakturowy") == "") {
$user->setEmailFakturowy(null);
} else {
$user->setEmailFakturowy($zadanie->get("emailFakturowy"));
}
if ($zadanie->get("nip") == "") {
$user->setNIP(null);
} else {
$user->setNIP($zadanie->get("nip"));
}
$user->setNazwa($zadanie->get("nazwa"));
if ($zadanie->get("pesel") == "") {
$user->setPESEL(null);
} else {
$user->setPESEL($zadanie->get("pesel"));
}
if ($zadanie->get("haslo") != "") {
$user->setPassword($UPHI->hashPassword($user, $zadanie->get("haslo")));
}
if ($zadanie->get("SMS") == "") {
$user->setSMS(null);
} else {
$user->setSMS($zadanie->get("SMS"));
}
$user->setPrivateWHOIS ($zadanie->get ("privateWHOIS") == "true");
if ($zadanie->get("uwagi") == "") {
$user->setUwagi(null);
} else {
$user->setUwagi($zadanie->get("uwagi"));
}
$CA = [];
foreach ($zadanie->get("kontakt_nazwa", []) as $NDX => $N) {
$CA [] = ["nazwa" => $N, "wartosc" => $zadanie->get("kontakt_wartosc", [])[$NDX]];
}
$user->setKontakty($CA);
$EM->persist($user);
$EM->flush();
return $this->render("userEdit.html.twig", [
"user" => $user,
"kraje" => $EM->getRepository(\App\Entity\Kraj::class)->findBy([], ["nazwa" => "ASC"])
]);
} else {
$this->redirectToRoute("users_list");
}
}
/**
* Zasób renderuje stronę klienta
* @Route ("/admin/userView/{userId}", name="user-view")
* @param \Doctrine\ORM\EntityManagerInterface $EM
* @param int $userId
* @return Response
*/
public function showUser(\Doctrine\ORM\EntityManagerInterface $EM, int $userId): Response {
$user = $EM->getRepository(\App\Entity\User::class)->find($userId);
$dokumenty = [];
foreach ($user->getDokumenty() as $dokument)
$dokumenty [] = $dokument;
foreach ($user->getCSA() as $CSA) {
//$CSA = new \App\Entity\HRDUser();
foreach ($CSA->getHRDProformy() as $PROFORMA) {
$dokumenty [] = $PROFORMA;
}
}
if (is_array($dokumenty)) {
usort($dokumenty, function ($a, $b) {
if (get_class($a) == "App\Entity\HRDProforma") {
$dataA = $a->getCrDate()->getTimestamp();
} else {
$dataA = $a->getDatawystawienia()->getTimestamp();
}
if (get_class($b) == "App\Entity\HRDProforma") {
$dataB = $b->getCrDate()->getTimestamp();
} else {
$dataB = $b->getDatawystawienia()->getTimestamp();
}
if ($dataA < $dataB) {
return 1;
} elseif ($dataA > $dataB) {
return -1;
} else {
return 0;
}
});
}
$domeny = [];
foreach ($user->getCSA() as $CSA) {
foreach ($CSA->getHRDDomains() as $domena) {
$domeny [] = $domena;
}
}
usort($domeny, function ($a, $b) {
if ($a->getExDate()->getTimestamp() < $b->getExDate()->getTimestamp()) {
return -1;
} elseif ($a->getExDate()->getTimestamp() > $b->getExDate()->getTimestamp()) {
return 1;
} else {
return 0;
}
});
return $this->render("userView.html.twig", [
"user" => $user,
"VAT" => floatval($EM->getRepository(\App\Entity\Conf::class)->peek("vat", "23")),
"DOMAIN_VAT" => floatval($EM->getRepository(\App\Entity\Conf::class)->peek("domains_vat", "23")),
"ALLOW_REGISTRATION" => intval($EM->getRepository(\App\Entity\Conf::class)->peek("allow_domains_registration", "0")),
"DOKUMENTY" => $dokumenty,
"domeny" => $domeny
]);
}
/**
* Zasób na podstawie formularza dodaje adres do klienta
* @Route("/admin/userEdit/addAddress/{userId}", name="add-address-2-user", methods={"POST"})
* @param \Doctrine\ORM\EntityManagerInterface $EM
* @param \Symfony\Component\HttpFoundation\Request $zadanie
* @param int $userId
* @return \Symfony\Component\HttpFoundation\JsonResponse
*/
public function addAddress2User(\Doctrine\ORM\EntityManagerInterface $EM, \Symfony\Component\HttpFoundation\Request $zadanie, int $userId): \Symfony\Component\HttpFoundation\JsonResponse {
$user = $EM->getRepository(\App\Entity\User::class)->find($userId);
if ($user) {
$ADR = new \App\Entity\Adres();
$ADR->setDom($zadanie->get("dom"));
$ADR->setKod($zadanie->get("kod"));
$ADR->setKraj($zadanie->get("kraj"));
$ADR->setLokal($zadanie->get("lokal"));
$ADR->setMiasto($zadanie->get("miasto"));
$ADR->setUlica($zadanie->get("ulica"));
$ADR->setNazwa($zadanie->get("nazwa"));
$ADR->setUser($user);
$EM->persist($ADR);
$EM->flush();
return new \Symfony\Component\HttpFoundation\JsonResponse([
"STATUS" => true,
"CARD" => $this->render("user/adres.html.twig", ["ADRES" => $ADR])->getContent()
]);
} else {
return new \Symfony\Component\HttpFoundation\JsonResponse(["STATUS" => false, "MESSAGE" => "Nie odnalazłem użytkownika o identyfikatorze " . $userId]);
}
}
/**
* Zasób usuwa rekord encji Adres, ID encji przekazany w polu POST "adresId"
* @Route ("/admin/user/deleteAddress", name="post-delete-address", methods={"POST"})
* @param \Doctrine\ORM\EntityManagerInterface $EM
* @param \Symfony\Component\HttpFoundation\Request $zadanie
* @return Response
*/
public function postDeleteAddress(\Doctrine\ORM\EntityManagerInterface $EM, \Symfony\Component\HttpFoundation\Request $zadanie): Response {
$A = $EM->getRepository(\App\Entity\Adres::class)->find(intval($zadanie->get("adresId", "0")));
if ($A) {
$EM->remove($A);
$EM->flush();
}
return new Response("OK");
}
/**
* Zasób usuwa rekord encji User, ID encji przekazany w polu POST "userId"
* @Route ("/admin/user/deleteUser", name="post-delete-user", methods={"POST"})
* @param \Doctrine\ORM\EntityManagerInterface $EM
* @param \Symfony\Component\HttpFoundation\Request $zadanie
* @return Response
*/
public function postDeleteUser(\Doctrine\ORM\EntityManagerInterface $EM, \Symfony\Component\HttpFoundation\Request $zadanie): Response {
$U = $EM->getRepository(\App\Entity\User::class)->find(intval($zadanie->get("userId", "0")));
if ($U) {
$EM->remove($U);
$EM->flush();
}
return new Response("OK");
}
/**
* Zasób udostępnia formularz nowego klienta
* @Route ("/admin/user/new", name="get-new-user", methods={"GET"})
* @param \Doctrine\ORM\EntityManagerInterface $EM
* @return Response
*/
public function getNewUser(\Doctrine\ORM\EntityManagerInterface $EM): Response {
return $this->render("userNew.html.twig", [
"kraje" => $EM->getRepository(\App\Entity\Kraj::class)->findBy([], ["nazwa" => "ASC"])
]);
}
/**
* Zasób tworzy na podstawie formularza nowego USERa i przekierowywuje do zasobu edycji nowo stworzonej encji
* @Route ("/admin/user/new", name="post-new-user", methods={"POST"})
* @param \Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface $UPHI
* @param \Doctrine\ORM\EntityManagerInterface $EM
* @param \Symfony\Component\HttpFoundation\Request $zadanie
* @return \Symfony\Component\HttpFoundation\JsonResponse
*/
public function postNewUser(\Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface $UPHI, \Doctrine\ORM\EntityManagerInterface $EM, \Symfony\Component\HttpFoundation\Request $zadanie): \Symfony\Component\HttpFoundation\JsonResponse {
$user = new \App\Entity\User();
$user->setEmail($zadanie->get("email"));
$user->setEmailFakturowy($zadanie->get("emailFakturowy"));
$kontakty = [];
foreach ($zadanie->get("kontakt_nazwa", []) as $NDX => $kNazwa) {
$kontakty [] = ["nazwa" => $kNazwa, "wartosc" => $zadanie->get("kontakt_wartosc")[$NDX]];
}
$user->setKontakty($kontakty);
$user->setNIP($zadanie->get("nip"));
$user->setNazwa($zadanie->get("nazwa"));
$user->setPESEL($zadanie->get("pesel"));
if (trim($zadanie->get("haslo", "")) != "") {
$user->setPassword($UPHI->hashPassword($user, $zadanie->get("haslo")));
}
$user->setRoles(["USER"]);
$user->setSMS($zadanie->get("SMS"));
$user->setPrivateWHOIS ($zadanie->get ("privateWHOIS") == "true");
$user->setSaldo(0);
$user->setUwagi($zadanie->get("uwagi"));
$alerts = [];
if (trim($zadanie->get("email")) == "") {
$alerts [] = ["class" => "danger", "icon" => "bi-exclamation-triangle-fill", "message" => "Adres e-mail nie może być pusty."];
} elseif (!preg_match('/^[a-z\d]+[\w\d.-]*@(?:[a-z\d]+[a-z\d-]+\.){1,5}[a-z]{2,6}$/', $zadanie->get("email", ""))) {
$alerts [] = ["message" => $zadanie->get("email", "") . " nie jest prawidłowym adresem e-mail."];
}
if (trim($zadanie->get("haslo")) == "") {
$alerts [] = ["class" => "danger", "icon" => "bi-exclamation-triangle-fill", "message" => "haslo nie może być puste."];
}
if (count($user->getKontakty()) == 0) {
$alerts [] = ["class" => "danger", "icon" => "bi-exclamation-triangle-fill", "message" => "Podaj przynajmniej jeden kontakt."];
}
$testU = $EM->getRepository(\App\Entity\User::class)->findOneBy(["email" => $user->getEmail()]);
if ($testU) {
$alerts [] = ["class" => "danger", "icon" => "bi-exclamation-triangle-fill", "message" => "Podany adres email \"<strong>" . $user->getEmail() . "</strong>\" jest już używany."];
}
if (trim($user->getNIP()) != "") {
$testU = $EM->getRepository(\App\Entity\User::class)->findOneBy(["NIP" => trim($user->getNIP())]);
if ($testU) {
$alerts [] = ["class" => "danger", "icon" => "bi-exclamation-triangle-fill", "message" => "Podany numer NIP \"<strong>" . $user->getNIP() . "</strong>\" jest już używany."];
}
}
if (trim($user->getPESEL()) != "") {
$testU = $EM->getRepository(\App\Entity\User::class)->findOneBy(["PESEL" => trim($user->getPESEL())]);
if ($testU) {
$alerts [] = ["class" => "danger", "icon" => "bi-exclamation-triangle-fill", "message" => "Podany numer PESEL \"<strong>" . $user->getPESEL() . "</strong>\" jest już używany."];
}
}
if ($zadanie->get("emailFakturowy", "") != "") {
if (!preg_match('/^[a-z\d]+[\w\d.-]*@(?:[a-z\d]+[a-z\d-]+\.){1,5}[a-z]{2,6}$/', $zadanie->get("emailFakturowy", ""))) {
$alerts [] = ["message" => $zadanie->get("emailFakturowy", "") . " nie jest prawidłowym adresem e-mail."];
}
}
if (intval($zadanie->get("hrd", "0")) == 1) {
if ((trim($zadanie->get("nip", "")) == "") && (trim($zadanie->get("pesel", "")) == "")) {
$alerts [] = ["message" => "Prosze podać NIP lub PESEL"];
} else if ((trim($zadanie->get("nip", "")) != "") && (trim($zadanie->get("pesel", "")) != "")) {
$alerts [] = ["message" => "Prosze podać NIP lub PESEL"];
}
$reprezentant = -1;
$telefon_kontaktowy = -1;
$telefon_komorkowy = -1;
$faks = -1;
$kontakt_nazwa = $zadanie->get("kontakt_nazwa", []);
$kontak_wartosc = $zadanie->get("kontakt_wartosc", []);
foreach ($kontakt_nazwa as $index => $nazwa_pola) {
if ((strtoupper($nazwa_pola) == "OSOBA REPREZENTUJĄCA") || (strtoupper($nazwa_pola) == "OSOBA REPREZENTUJąCA")) {
if (isset($kontak_wartosc [$index])) {
if (trim($kontak_wartosc [$index]) != "") {
$reprezentant = $index;
}
}
}
if (strtoupper($nazwa_pola) == "TELEFON KONTAKTOWY") {
if (isset($kontak_wartosc [$index])) {
if (trim($kontak_wartosc [$index]) != "") {
$telefon_kontaktowy = $index;
}
}
}
if ((strtoupper($nazwa_pola) == "TELEFON KOMÓRKOWY") || (strtoupper($nazwa_pola) == "TELEFON KOMóRKOWY")) {
if (isset($kontak_wartosc [$index])) {
if (trim($kontak_wartosc [$index]) != "") {
$telefon_komorkowy = $index;
}
}
}
if (strtoupper($nazwa_pola) == "FAKS") {
if (isset($kontak_wartosc [$index])) {
if (trim($kontak_wartosc [$index]) != "") {
$faks = $index;
}
}
}
}
if ($telefon_kontaktowy == -1) {
$alerts [] = ["message" => "Proszę wypełnić/podać kontakt o nazwie: \"Telefon kontaktowy\"."];
}
if (trim($zadanie->get("nip", "")) != "") {
if ($reprezentant == -1) {
$alerts [] = ["message" => "Proszę wypełnić/podać kontakt o nazwie: \"Osoba reprezentująca\"."];
}
}
if ($telefon_kontaktowy != -1) {
$buf = $kontak_wartosc [$telefon_kontaktowy];
$telefon_kontaktowy_v = "";
$kropka = false;
for ($n = 0; $n < strlen($buf); $n++) {
if ($buf [$n] == "+") {
if ($n == 0)
$telefon_kontaktowy_v .= "+";
}
if ($buf [$n] == ".") {
if ((strlen($telefon_kontaktowy_v) > 2) && (strlen($telefon_kontaktowy_v) < 5) && !$kropka) {
$kropka = true;
$telefon_kontaktowy_v .= ".";
}
}
if (($buf [$n] >= "0") && ($buf [$n] <= "9"))
$telefon_kontaktowy_v .= $buf [$n];
}
if ($telefon_kontaktowy_v [0] != "+")
$telefon_kontaktowy_v = "+" . $telefon_kontaktowy_v;
if (strpos($telefon_kontaktowy_v, ".") === false) {
$alerts [] = ["message" => "Telefon kontaktowy powinien być podany w formacie: \"+CC.NNNNNNNNN\". Gdzie CC to międzynarodowy numer kiedynkowy (48 dla Polski)."];
}
}
if ($telefon_komorkowy != -1) {
$buf = $kontak_wartosc [$telefon_komorkowy];
$telefon_komorkowy_v = "";
$kropka = false;
for ($n = 0; $n < strlen($buf); $n++) {
if ($buf [$n] == "+") {
if ($n == 0)
$telefon_komorkowy_v .= "+";
}
if ($buf [$n] == ".") {
if ((strlen($telefon_komorkowy_v) > 2) && (strlen($telefon_komorkowy_v) < 5) && !$kropka) {
$kropka = true;
$telefon_komorkowy_v .= ".";
}
}
if (($buf [$n] >= "0") && ($buf [$n] <= "9"))
$telefon_komorkowy_v .= $buf [$n];
}
if ($telefon_komorkowy_v [0] != "+")
$telefon_komorkowy_v = "+" . $telefon_komorkowy_v;
if (strpos($telefon_komorkowy_v, ".") === false) {
$alerts [] = ["message" => "Telefon komórkowy powinien być podany w formacie: \"+CC.NNNNNNNNN\". Gdzie CC to międzynarodowy numer kiedynkowy (48 dla Polski)."];
}
}
if ($faks != -1) {
$buf = $kontak_wartosc [$faks];
$faks_v = "";
$kropka = false;
for ($n = 0; $n < strlen($buf); $n++) {
if ($buf [$n] == "+") {
if ($n == 0)
$faks_v .= "+";
}
if ($buf [$n] == ".") {
if ((strlen($faks_v) > 2) && (strlen($faks_v) > 5) && !$kropka) {
$kropka = true;
$faks_v .= "+";
}
}
if (($buf [$n] >= "0") && ($buf [$n] <= "9"))
$faks_v .= $buf [$n];
}
if ($faks_v [0] != "+")
$faks_v = "+" . $faks_v;
if (strpos($faks_v, ".") === false) {
$alerts [] = ["message" => "Faks powinien być podany w formacie: \"+CC.NNNNNNNNN\". Gdzie CC to międzynarodowy numer kiedynkowy (48 dla Polski)."];
}
} else {
$faks_v = "";
}
}
if (count($alerts) > 0) {
return new \Symfony\Component\HttpFoundation\JsonResponse(["STATUS" => false, "MESSAGES" => $alerts]);
} else {
if (intval($zadanie->get("hrd", "0")) == 1) {
$EM->persist($user);
$ADR = new \App\Entity\Adres ();
$ADR->setDom(trim($zadanie->get("adres_dom", "")));
$ADR->setKod(trim($zadanie->get("adres_kod", "")));
$ADR->setKraj(trim($zadanie->get("adres_kraj", "PL")));
$ADR->setLokal(trim($zadanie->get("adres_lokal", "")));
$ADR->setMiasto(trim($zadanie->get("adres_miasto", "")));
$ADR->setNazwa(trim($zadanie->get("adres_nazwa", "")));
$ADR->setUlica(trim($zadanie->get("adres_ulica", "")));
$user->addAdresy($ADR);
$EM->flush();
$ulica_v = trim($zadanie->get("adres_ulica", "")) . " " . trim($zadanie->get("adres_dom", ""));
if (trim($zadanie->get("adres_lokal", "")) != "") {
$ulica_v .= " lok. " . trim($zadanie->get("adres_lokal", ""));
}
$res = $user->createNewCSA($EM,
$zadanie->get("nazwa"),
(trim($zadanie->get("nip")) != "") ? "company" : "person",
(trim($zadanie->get("nip")) != "") ? $zadanie->get("nip") : $zadanie->get("pesel"),
$zadanie->get("email"),
$telefon_kontaktowy_v,
trim($zadanie->get("adres_kraj", "PL")),
($reprezentant == -1) ? "" : $kontakt_wartosc [$reprezentant],
($telefon_komorkowy == -1) ? "" : $telefon_komorkowy_v,
$faks_v,
$ulica_v,
trim($zadanie->get("adres_kod", "")),
trim($zadanie->get("adres_miasto", ""))
);
return new \Symfony\Component\HttpFoundation\JsonResponse(["STATUS" => ($res == "OK"), "USERID" => $user->getId(), "RES" => $res]);
} else {
$EM->persist($user);
$EM->flush();
}
return new \Symfony\Component\HttpFoundation\JsonResponse(["STATUS" => true, "USERID" => $user->getId()]);
}
}
/**
* Zasób uaktualnia proformy Usera z HRD, ID encji USER przekazane w polu POST userId
* @Route ("/admin/user/updateProformas", name="post-update-user-proformas", methods={"POST"})
* @param \Doctrine\ORM\EntityManagerInterface $EM
* @param \Symfony\Component\HttpFoundation\Request $zadanie
* @return Response
*/
public function postUpdateUserProformas(\Doctrine\ORM\EntityManagerInterface $EM, \Symfony\Component\HttpFoundation\Request $zadanie): Response {
$user = $EM->getRepository(\App\Entity\User::class)->find(intval($zadanie->get("userId", "0")));
if ($user) {
foreach ($user->getCSA() as $CSA) {
$CSA->updateProformas($EM);
}
}
return new Response("OK");
}
/**
* Zasób uaktualnia domeny Usera z HRD, ID encji USER przekazane w polu POST userId
* @Route ("/admin/user/updateDomains", name="post-update-user-domains", methods={"POST"})
* @param \Doctrine\ORM\EntityManagerInterface $EM
* @param \Symfony\Component\HttpFoundation\Request $zadanie
* @return Response
*/
public function postUpdateUserDomains(\Doctrine\ORM\EntityManagerInterface $EM, \Symfony\Component\HttpFoundation\Request $zadanie): Response {
$user = $EM->getRepository(\App\Entity\User::class)->find(intval($zadanie->get("userId", "0")));
if ($user) {
foreach ($user->getCSA() as $CSA) {
$CSA->updateDomains($EM);
}
}
return new Response("OK");
}
/**
* Zasób wyświetla stronę wyszukiwarki domen do rejestracji dla klienta
* @Route ("/admin/user/newDomain/{userId}-1", name="get-new-domain")
* @param \Doctrine\ORM\EntityManagerInterface $EM
* @param int $userId
* @return Response
*/
public function getNewDomain(\Doctrine\ORM\EntityManagerInterface $EM, int $userId): Response {
return $this->render("newDomain.html.twig", [
"user" => $EM->getRepository(\App\Entity\User::class)->find($userId),
"ns1" => $EM->getRepository(\App\Entity\Conf::class)->peek("ns1"),
"ns2" => $EM->getRepository(\App\Entity\Conf::class)->peek("ns2"),
"kosztonline" => floatVal($EM->getRepository(\App\Entity\Conf::class)->peek("TPAYKoszt", 0))
]);
}
/**
* Zasób kończy zamawianie domen w trybie do zapłaty we własnym zakresie.
* Dane przekazane w postaci JSON za pomoca metody POST
* @Route("/admin/user/newDomain/finishOffLine/{userId}", name="post-new-domain-finish-off-line", methods={"POST"})
* @param \Swift_Mailer $mailer
* @param \App\Service\inWords $slownie
* @param \Symfony\Component\HttpFoundation\Request $zadanie
* @param \Doctrine\ORM\EntityManagerInterface $EM
* @param int $userId
* @return \Symfony\Component\HttpFoundation\JsonResponse
*/
public function postNewDomainFinishOffLine(\Swift_Mailer $mailer, \App\Service\inWords $slownie, \Symfony\Component\HttpFoundation\Request $zadanie, \Doctrine\ORM\EntityManagerInterface $EM, int $userId): \Symfony\Component\HttpFoundation\JsonResponse {
$user = $EM->getRepository(\App\Entity\User::class)->find($userId);
if ($user) {
$POZYCJE = $zadanie->get("ITEMS");
$NETTO = 0;
$VAT = 0;
$BRUTTO = 0;
foreach ($POZYCJE as $POZYCJA) {
$NETTO += floatval($POZYCJA ['netto']);
$BRUTTO += floatval($POZYCJA ['brutto']);
}
$p = new \App\Entity\Dokument();
$p->setBrutto($BRUTTO);
$p->setDatawystawienia(new \DateTime(date("Y-m-d")));
$p->setDozaplaty($BRUTTO);
$p->setFormaplatnosci(\App\Entity\Dokument::fpPrzelew);
$p->setNetto($NETTO);
$p->setOdbiorca($user->getNazwa() . "\n" . ($user->getNIP() ? "NIP: " . $user->getNIP() : "PESEL: " . $user->getPESEL()));
if (intval($zadanie->get("ADRES")) != 0) {
$ADR = $EM->getRepository(\App\Entity\Adres::class)->find(intval($zadanie->get("ADRES")));
if ($ADR) {
$p->setOdbiorca($p->getOdbiorca() . "\n" . $ADR->getUlica() . " " . $ADR->getDom() . ($ADR->getLokal() ? " lokal " . $ADR->getLokal() : "") . "\n" . $ADR->getKod() . " " . $ADR->getMiasto() . "\n" . $ADR->getKraj());
}
}
$p->setRodzaj(\App\Entity\Dokument::dtFP);
$p->setStatus(\App\Entity\Dokument::dsNieZaplacony);
$p->setTerminplatnosci(new \DateTime(date("Y-m-d", time() + 86400 * intval($EM->getRepository(\App\Entity\Conf::class)->peek("register-domains-pay-day-limit", "7")))));
$p->setUser($user);
$p->setVat($BRUTTO - $NETTO);
$p->setWystawca($EM->getRepository(\App\Entity\Conf::class)->peek("seller-text", "seller-text"));
$numer_proformy = intval($EM->getRepository(\App\Entity\Conf::class)->peek("proforma-counter", "1"));
$EM->getRepository(\App\Entity\Conf::class)->poke("proforma-counter", $numer_proformy + 1);
$format_numeru = $EM->getRepository(\App\Entity\Conf::class)->peek("proforma-format", "{nr}");
$p->setNumer(str_replace(["{nr}", "{d}", "{m}", "{R}"], [$numer_proformy, date("d"), date("m"), date("Y")], $format_numeru));
$EM->persist($p);
$EM->flush();
foreach ($POZYCJE as $POZYCJA) {
$pp = new \App\Entity\PozycjaDokumentu ();
$pp->setCenabrutto(floatval($POZYCJA ['brutto']));
$pp->setCenanetto(floatval($POZYCJA ['netto']));
$pp->setCenavat(floatval($POZYCJA ['brutto']) - floatval($POZYCJA ['netto']));
$pp->setCsa(intval($zadanie->get("CSA")));
$pp->setDokument($p);
$pp->setDomena($POZYCJA ['name']);
$pp->setIlosc(1);
$pp->setNazwa("Rejestracja domeny: " . $POZYCJA ['name']);
$pp->setNs1($POZYCJA ['ns1']);
$pp->setNs2($POZYCJA ['ns2']);
$pp->setNs3($POZYCJA ['ns3']);
$pp->setRodzaj(\App\Entity\PozycjaDokumentu::prRejestracjaDomeny);
$pp->setWartoscbrutto(floatval($POZYCJA ['brutto']));
$pp->setWartoscnetto(floatval($POZYCJA ['netto']));
$pp->setWartoscvat(floatval($POZYCJA ['brutto']) - floatval($POZYCJA ['netto']));
$EM->persist($pp);
$EM->flush();
}
$EM->refresh($p);
//Wygenerowanie pliku
//Faktura proforma
// Configure Dompdf according to your needs
$pdfOptions = new \Dompdf\Options();
$pdfOptions->set('defaultFont', 'Tahoma');
$pdfOptions->set('enable_remote', true);
//$pdfOptions->set('tempDir', "/var/www/80/chopin.ndc.pl/doc/temp");
//$pdfOptions->set('logOutputFile', "/var/www/80/chopin.ndc.pl/doc/temp/log.txt");
// Instantiate Dompdf with our options
$dompdf = new \Dompdf\Dompdf($pdfOptions);
// Retrieve the HTML generated in our twig file
$html = $this->renderView('dokument/faktura-proforma-pdf-template.html.twig', [
"dokument" => $p,
"orgcpy" => "ORYGINAŁ",
"słownie" => $slownie->kwotaslownie($p->getBrutto())
]);
// Load HTML to Dompdf
$dompdf->loadHtml($html);
// (Optional) Setup the paper size and orientation 'portrait' or 'portrait'
$dompdf->setPaper('A4', 'portrait');
// Render the HTML as PDF
$dompdf->render();
// Output the generated PDF to Browser (force download)
$binaryPDF = $dompdf->output();
$zalacznik = new \Swift_Attachment();
$zalacznik->setFilename (str_replace ("/", "_", $p->getNumer()) . ".pdf");
$zalacznik->setContentType ("application/pdf");
$zalacznik->setBody ($binaryPDF);
//Wysłanie e-maila
$emailMessage = new \Swift_Message(str_replace ('{nr}', $p->getNumer (), $EM->getRepository(\App\Entity\Conf::class)->peek ("email-domain-registration-title", "InforPol NET: Zamówienie {nr} na rejestrację domen.")));
$emailMessage->setFrom ($EM->getRepository(\App\Entity\Conf::class)->peek ("email-sender-return-address", "info@ndc.pl"), $EM->getRepository(\App\Entity\Conf::class)->peek ("email-sender-name", "INFORPOL NET"))
->setTo ($p->getUser()->getEmailFakturowy(), $p->getUser()->getNazwa())
->setBody (
$this->renderView("email/rejestracja_proforma.html.twig", ["dokument" => $p]),
'text/html'
)->attach ($zalacznik);
$mailer->send($emailMessage);
return new \Symfony\Component\HttpFoundation\JsonResponse(["SUCCESS" => true, "ITEMS" => $zadanie->get("ITEMS"), "CSA" => $zadanie->get("CSA")]);
} else {
throw new \Exception("Nieznany USER o identyfikatorze ID = " . $userId);
}
}
/**
* Zasób kończy zamawianie domen w trybie zapłaty ON-LINE
* @Route("/admin/user/newDomain/finishOnLine/{userId}", name="post-new-domain-finish-on-line", methods={"POST"})
* @param \Symfony\Component\HttpFoundation\Request $zadanie
* @param \Doctrine\ORM\EntityManagerInterface $EM
* @param int $userId
* @return \Symfony\Component\HttpFoundation\JsonResponse
*/
public function postNewDomainFinishOnLine(\Symfony\Component\HttpFoundation\Request $zadanie, \Doctrine\ORM\EntityManagerInterface $EM, int $userId): \Symfony\Component\HttpFoundation\JsonResponse {
//$tpay = new \tpayLibs\src\_class_tpay\TransactionApi ();
$user = $EM->getRepository(\App\Entity\User::class)->find($userId);
if ($user) {
$POZYCJE = $zadanie->get("ITEMS");
$NETTO = 0;
$VAT = 0;
$BRUTTO = 0;
foreach ($POZYCJE as $POZYCJA) {
$NETTO += floatval($POZYCJA ['netto']);
$BRUTTO += floatval($POZYCJA ['brutto']);
}
$p = new \App\Entity\Dokument();
$p->setBrutto($BRUTTO);
$p->setDatawystawienia(new \DateTime(date("Y-m-d")));
$p->setDozaplaty($BRUTTO);
$p->setFormaplatnosci(\App\Entity\Dokument::fpPrzelew);
$p->setNetto($NETTO);
$p->setOdbiorca($user->getNazwa() . "\n" . ($user->getNIP() ? "NIP: " . $user->getNIP() : "PESEL: " . $user->getPESEL()));
if (intval($zadanie->get("ADRES")) != 0) {
$ADR = $EM->getRepository(\App\Entity\Adres::class)->find(intval($zadanie->get("ADRES")));
if ($ADR) {
$p->setOdbiorca($p->getOdbiorca() . "\n" . $ADR->getUlica() . " " . $ADR->getDom() . ($ADR->getLokal() ? " lokal " . $ADR->getLokal() : "") . "\n" . $ADR->getKod() . " " . $ADR->getMiasto() . "\n" . $ADR->getKraj());
}
}
$p->setRodzaj(\App\Entity\Dokument::dtFP);
$p->setStatus(\App\Entity\Dokument::dsNieZaplacony);
$p->setTerminplatnosci(new \DateTime(date("Y-m-d", time() + 86400 * intval($EM->getRepository(\App\Entity\Conf::class)->peek("register-domains-pay-day-limit", "7")))));
$p->setUser($user);
$p->setVat($BRUTTO - $NETTO);
$p->setWystawca($EM->getRepository(\App\Entity\Conf::class)->peek("seller-text", "seller-text"));
$numer_proformy = intval($EM->getRepository(\App\Entity\Conf::class)->peek("proforma-counter", "1"));
$EM->getRepository(\App\Entity\Conf::class)->poke("proforma-counter", $numer_proformy + 1);
$format_numeru = $EM->getRepository(\App\Entity\Conf::class)->peek("proforma-format", "{nr}");
$p->setNumer(str_replace(["{nr}", "{d}", "{m}", "{R}"], [$numer_proformy, date("d"), date("m"), date("Y")], $format_numeru));
$EM->persist($p);
$EM->flush();
foreach ($POZYCJE as $POZYCJA) {
$pp = new \App\Entity\PozycjaDokumentu ();
$pp->setCenabrutto(floatval($POZYCJA ['brutto']));
$pp->setCenanetto(floatval($POZYCJA ['netto']));
$pp->setCenavat(floatval($POZYCJA ['brutto']) - floatval($POZYCJA ['netto']));
$pp->setCsa(intval($zadanie->get("CSA")));
$pp->setDokument($p);
$pp->setDomena($POZYCJA ['name']);
$pp->setIlosc(1);
$pp->setNazwa("Rejestracja domeny: " . $POZYCJA ['name']);
$pp->setNs1($POZYCJA ['ns1']);
$pp->setNs2($POZYCJA ['ns2']);
$pp->setNs3($POZYCJA ['ns3']);
$pp->setRodzaj(\App\Entity\PozycjaDokumentu::prRejestracjaDomeny);
$pp->setWartoscbrutto(floatval($POZYCJA ['brutto']));
$pp->setWartoscnetto(floatval($POZYCJA ['netto']));
$pp->setWartoscvat(floatval($POZYCJA ['brutto']) - floatval($POZYCJA ['netto']));
$EM->persist($pp);
$EM->flush();
}
$EM->refresh($p);
return new \Symfony\Component\HttpFoundation\JsonResponse(["SUCCESS" => true, "DOCUMENT_ID" => $p->getId () ]);
} else {
throw new \Exception("Nieznany USER o identyfikatorze ID = " . $userId);
}
}
/**
* Zasób renderuje stronę rejestracji nowego uzytkownika
* @Route("/rejestracja", name="rejestracja", methods={"GET"})
* @param \Doctrine\ORM\EntityManagerInterface $em
* @return Response
*/
public function getRejestracja (\Doctrine\ORM\EntityManagerInterface $em): Response {
return $this->render("rejestracja.html.twig", [
"kraje" => $em->getRepository(\App\Entity\Kraj::class)->findBy([], ["nazwa" => "ASC"]),
"nazwa" => [ "value" => "", "error" => false, "message" => "" ],
"email" => [ "value" => "", "error" => false, "message" => "" ],
"login" => [ "value" => "", "error" => false, "message" => "" ],
"haslo1" => [ "value" => "", "error" => false, "message" => "" ],
"haslo2" => [ "value" => "", "error" => false, "message" => "" ],
"rodzaj_konta" => [ "value" => "person", "error" => false, "message" => "" ],
"identyfikator" => [ "value" => "", "error" => false, "message" => "" ],
"email_fakturowy" => [ "value" => "", "error" => false, "message" => "" ],
"reprezentant" => [ "value" => "", "error" => false, "message" => "" ],
"telefon_kontaktowy" => [ "value" => "", "error" => false, "message" => "" ],
"telefon_komorkowy" => [ "value" => "", "error" => false, "message" => "" ],
"fax" => [ "value" => "", "error" => false, "message" => "" ],
"kraj" => [ "value" => $em->getRepository (\App\Entity\Kraj::class)->findOneBy ( ["skrot2" => "PL" ])->getId (), "error" => false, "message" => "" ],
"kod" => [ "value" => "", "error" => false, "message" => "" ],
"miasto" => [ "value" => "", "error" => false, "message" => "" ],
"ulica" => [ "value" => "", "error" => false, "message" => "" ],
"dom" => [ "value" => "", "error" => false, "message" => "" ],
"lokal" => [ "value" => "", "error" => false, "message" => "" ],
"privateWHOIS" => [ "value" => true, "error" => false, "message" => "" ]
]);
}
/**
* Zasób rejestruje nowego użytkownika
* @Route("/rejestracja", name="postRejestracja", methods={"POST"})
* @param \App\Service\PassValidator $passv
* @param \Swift_Mailer $mailer
* @param \Doctrine\ORM\EntityManagerInterface $em
* @param \Symfony\Component\HttpFoundation\Request $zadanie
* @param \App\Service\phoneValidator $pv
* @param \Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface $PHI
* @return Response
*/
public function postRejestracja (\App\Service\PassValidator $passv, \Swift_Mailer $mailer, \Doctrine\ORM\EntityManagerInterface $em, \Symfony\Component\HttpFoundation\Request $zadanie, \App\Service\phoneValidator $pv, \Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface $PHI, \Psr\Log\LoggerInterface $log): Response {
$opcje = [
"kraje" => $em->getRepository(\App\Entity\Kraj::class)->findBy([], ["nazwa" => "ASC"]),
"nazwa" => [ "value" => $zadanie->get ("nazwa"), "error" => false, "message" => "" ],
"email" => [ "value" => $zadanie->get ("email"), "error" => false, "message" => "" ],
"login" => [ "value" => $zadanie->get ("login"), "error" => false, "message" => "" ],
"haslo1" => [ "value" => $zadanie->get ("haslo1"), "error" => false, "message" => "" ],
"haslo2" => [ "value" => $zadanie->get ("haslo2"), "error" => false, "message" => "" ],
"rodzaj_konta" => [ "value" => $zadanie->get ("rodzaj_konta"), "error" => false, "message" => "" ],
"identyfikator" => [ "value" => $zadanie->get ("identyfikator"), "error" => false, "message" => "" ],
"email_fakturowy" => [ "value" => $zadanie->get ("email_fakturowy"), "error" => false, "message" => "" ],
"reprezentant" => [ "value" => $zadanie->get ("reprezentant"), "error" => false, "message" => "" ],
"telefon_kontaktowy" => [ "value" => $zadanie->get ("telefon_kontaktowy"), "error" => false, "message" => "" ],
"telefon_komorkowy" => [ "value" => $zadanie->get ("telefon_komorkowy"), "error" => false, "message" => "" ],
"fax" => [ "value" => $zadanie->get ("fax"), "error" => false, "message" => "" ],
"kraj" => [ "value" => intval ($zadanie->get ("kraj")), "error" => false, "message" => "" ],
"kod" => [ "value" => $zadanie->get ("kod"), "error" => false, "message" => "" ],
"miasto" => [ "value" => $zadanie->get ("miasto"), "error" => false, "message" => "" ],
"ulica" => [ "value" => $zadanie->get ("ulica"), "error" => false, "message" => "" ],
"dom" => [ "value" => $zadanie->get ("dom"), "error" => false, "message" => "" ],
"lokal" => [ "value" => $zadanie->get ("lokal"), "error" => false, "message" => "" ],
"privateWHOIS" => [ "value" => ($zadanie->get ("privateWHOIS", "off") == "on"), "error" => false, "message" => "" ]
];
if (trim ($opcje ['nazwa']['value']) == "") {
$opcje ['nazwa']['error'] = true;
$opcje ['nazwa']['message'] = "To pole nie może być puste.";
}
if (trim ($opcje ['email']['value']) == "") {
$opcje ['email']['error'] = true;
$opcje ['email']['message'] = "To pole nie może być puste.";
} else {
if (filter_var ($opcje ['email']['value'], FILTER_VALIDATE_EMAIL) === false) {
$opcje ['email']['error'] = true;
$opcje ['email']['message'] = "Ten adres e-mail wyglada na nieprawidłowy.";
}
}
if (!$opcje ['email']['error']) {
$u = $em->getRepository(\App\Entity\User::class)->findOneBy ([ "email" => $opcje ['email']['value']]);
if ($u) {
$opcje ['email']['error'] = true;
$opcje ['email']['message'] = "Ten adres e-mail jest już wykorzystywany. Proszę podać inny, lub zalogować się na swoje konto.";
}
}
if (trim ($opcje ['login']['value']) == "") {
$opcje ['login']['error'] = true;
$opcje ['login']['message'] = "To pole nie może być puste.";
}
if (!$opcje ['login']['error']) {
$u = $em->getRepository(\App\Entity\User::class)->findOneBy ([ "login" => $opcje ['login']['value']]);
if ($u) {
$opcje ['email']['error'] = true;
$opcje ['email']['message'] = "Ten login jest już wykorzystywany. Proszę podać inny, lub zalogować się na swoje konto.";
}
}
if (trim ($opcje ['haslo1']['value']) == "") {
$opcje ['haslo1']['error'] = true;
$opcje ['haslo1']['message'] = "To pole nie może być puste.";
}
if (trim ($opcje ['haslo2']['value']) == "") {
$opcje ['haslo2']['error'] = true;
$opcje ['haslo2']['message'] = "To pole nie może być puste.";
}
if ($opcje ['rodzaj_konta'] == "company") {
if (trim ($opcje ['reprezentant']['value']) == "") {
$opcje ['reprezentant']['error'] = "To pole nie może być puste.";
$opcje ['reprezentant']['error'] = true;
}
}
if ($opcje ['haslo1']['value'] != $opcje ['haslo2']['value']) {
$opcje ['haslo1']['error'] = true;
$opcje ['haslo2']['error'] = true;
$opcje ['haslo1']['message'] = "Hasła nie mogą być różne.";
$opcje ['haslo2']['message'] = "Hasła nie mogą być różne.";
}
if (!$opcje ['haslo1']['error']) {
$passtest = $passv->isValid($em, $opcje ['haslo1']['value']);
if ($passtest !== true) {
$opcje ['haslo1']['error'] = true;
$opcje ['haslo2']['error'] = true;
$opcje ['haslo1']['message'] = $passtest;
$opcje ['haslo2']['message'] = $passtest;
}
}
if (trim ($opcje ['identyfikator']['value']) == "") {
$opcje ['identyfikator']['error'] = true;
$opcje ['identyfikator']['message'] = "To pole nie może być puste.";
}
if (trim ($opcje ['email_fakturowy']['value']) != "") {
if (filter_var ($opcje ['email_fakturowy']['value'], FILTER_VALIDATE_EMAIL) === false) {
$opcje ['email_fakturowy']['error'] = true;
$opcje ['email_fakturowy']['message'] = "Ten adres e-mail wyglada na nieprawidłowy.";
}
}
if (trim ($opcje ['telefon_kontaktowy']['value']) == "") {
$opcje ['telefon_kontaktowy']['error'] = true;
$opcje ['telefon_kontaktowy']['message'] = "To pole nie może być puste.";
} else {
//Walidacja telefonu
if (!$pv->isValid($opcje ['telefon_kontaktowy']['value'])) {
$opcje ['telefon_kontaktowy']['error'] = true;
$opcje ['telefon_kontaktowy']['message'] = "Ten numer telefonu wyglada na nieprawidłowy.";
}
}
if (trim ($opcje ['telefon_komorkowy']['value']) != "") {
if (!$pv->isValid($opcje ['telefon_komorkowy']['value'])) {
$opcje ['telefon_komorkowy']['error'] = true;
$opcje ['telefon_komorkowy']['message'] = "Ten numer telefonu wyglada na nieprawidłowy.";
}
}
if (trim ($opcje ['fax']['value']) != "") {
if (!$pv->isValid($opcje ['fax']['value'])) {
$opcje ['fax']['error'] = true;
$opcje ['fax']['message'] = "Ten numer faksu wygląda na nieprawidłowy.";
}
}
if (trim ($opcje ['kod']['value']) == "") {
$opcje ['kod']['error'] = true;
$opcje ['kod']['message'] = "To pole nie może być puste.";
}
if (trim ($opcje ['miasto']['value']) == "") {
$opcje ['miasto']['error'] = true;
$opcje ['miasto']['message'] = "To pole nie może być puste.";
}
if (trim ($opcje ['dom']['value']) == "") {
$opcje ['dom']['error'] = true;
$opcje ['dom']['message'] = "To pole nie może być puste.";
}
foreach ($opcje as $opcja) {
if (is_array ($opcja)) {
if (isset ($opcja ['error'])) {
if ($opcja ['error']) {
return $this->render("rejestracja.html.twig", $opcje);
}
}
}
}
//Rejestracja użytkownika
$u = new \App\Entity\User ();
$u->setEmail($opcje ['email']['value']);
$u->setLogin($opcje ['login']['value']);
if ($opcje ['email_fakturowy']['value'] != "") $u->setEmailFakturowy($opcje ['email_fakturowy']['value']);
if ($opcje ['rodzaj_konta']['value'] == "person") {
$u->setPESEL ($opcje ['identyfikator']['value']);
} else {
$u->setNIP ($opcje ['identyfikator']['value']);
}
$u->setNazwa($opcje ['nazwa']['value']);
$u->setPassword($opcje ['haslo1']['value']);//$PHI->hashPassword ($u, $opcje ['haslo1']['value']));
$u->setPrivateWHOIS($opcje ['privateWHOIS']['value']);
$u->setRoles(["ROLE_USER"]);
if ($opcje ['telefon_komorkowy']['value'] != "") $u->setSMS($opcje ['telefon_komorkowy']['value']);
$u->setSaldo(0);
$u->setUwagi("Rejestracja z WWW");
$kontakty = [];
if (trim ($opcje ['telefon_kontaktowy']['value']) != "") {
$kontakty [] = [ "nazwa" => "Telefon kontaktowy", "wartosc" => $opcje ['telefon_kontaktowy']['value'] ];
}
if (trim ($opcje ['telefon_komorkowy']['value']) != "") {
$kontakty [] = [ "nazwa" => "Telefon komórkowy", "wartosc" => $opcje ['telefon_komorkowy']['value'] ];
}
if (trim ($opcje ['fax']['value']) != "") {
$kontakty [] = [ "nazwa" => "Faks", "wartosc" => $opcje ['fax']['value'] ];
}
if (count ($kontakty) > 0) {
$u->setKontakty($kontakty);
}
$u->setCrDate(new \DateTime ());
$u->setPotwierdzenieMail(false);
$em->persist($u);
$em->flush();
$a = new \App\Entity\Adres();
$a->setDom($opcje ['dom']['value']);
$a->setKod($opcje ['kod']['value']);
$a->setKraj($em->getRepository (\App\Entity\Kraj::class)->find (intval ($opcje ['kraj']['value']))->getSkrot2 ());
if ($opcje ['lokal']['value'] != "") $a->setLokal($opcje ['lokal']['value']);
$a->setMiasto($opcje ['miasto']['value']);
$a->setNazwa("Adres");
if ($opcje ['ulica']['value'] != "") $a->setUlica($opcje ['ulica']['value']);
$a->setUser($u);
$em->persist($a);
$em->flush ();
if ($opcje ['rodzaj_konta']['value'] == "person") {
$HRDMAKE = $u->createNewCSA(
$em,
$opcje ['nazwa']['value'],
$opcje ['rodzaj_konta']['value'],
$opcje ['identyfikator']['value'],
$opcje ['email']['value'],
$pv->convert2HRD($opcje ['telefon_kontaktowy']['value']),
$a->getKraj(),
"",
((trim ($opcje ['telefon_komorkowy']['value']) == "") ? "" : $pv->convert2HRD($opcje ['telefon_komorkowy']['value'])),
((trim ($opcje ['fax']['value']) == "") ? "" : $pv->convert2HRD($opcje ['fax']['value'])),
trim ($opcje ['ulica']['value'] . " " . $opcje ['dom']['value'] . " lok. " . $opcje ['lokal']['value']),
$opcje ['kod']['value'],
$opcje ['miasto']['value']
);
} else {
$HRDMAKE = $u->createNewCSA(
$em,
$opcje ['nazwa']['value'],
$opcje ['rodzaj_konta']['value'],
$opcje ['identyfikator']['value'],
$opcje ['email']['value'],
$pv->convert2HRD($opcje ['telefon_kontaktowy']['value']),
$a->getKraj(),
$opcje ['reprezentant']['value'],
((trim ($opcje ['telefon_komorkowy']['value']) == "") ? "" : $pv->convert2HRD($opcje ['telefon_komorkowy']['value'])),
((trim ($opcje ['fax']['value']) == "") ? "" : $pv->convert2HRD($opcje ['fax']['value'])),
trim ($opcje ['ulica']['value'] . " " . $opcje ['dom']['value'] . " lok. " . $opcje ['lokal']['value']),
$opcje ['kod']['value'],
$opcje ['miasto']['value']
);
}
if (substr ($HRDMAKE, 0, 3) == "OK:") {
//Przypisanie ewentualnego koszyka do konta
if ($zadanie->getSession()->isStarted()) {
if ($zadanie->getSession()->has("koszyk")) {
//Przepisywanie koszyka z sesji do usera
if (!$u->getKoszyk()) {
$koszyk = new \App\Entity\Koszyk ();
$koszyk->setUser($u);
$em->persist($koszyk);
$em->flush();
$em->refresh($u);
}
foreach ($zadanie->getSession()->get("koszyk")->getPozycja() as $pozycja) {
if (!$u->getKoszyk()->isIn($pozycja->getNazwa())) {
$poz = new \App\Entity\PozycjaDokumentu();
$poz->setCenabrutto($pozycja->getCenabrutto());
$poz->setCenanetto($pozycja->getCenanetto());
$poz->setCenavat($pozycja->getCenavat());
$poz->setDomena($pozycja->getDomena());
$poz->setIlosc($pozycja->getIlosc());
$poz->setKoszyk($u->getKoszyk());
$poz->setNazwa($pozycja->getNazwa());
$poz->setNs1($pozycja->getNs1());
$poz->setNs2($pozycja->getNs2());
$poz->setNs3($pozycja->getNs3());
$poz->setRodzaj($pozycja->getRodzaj());
$poz->setWartoscbrutto($pozycja->getWartoscbrutto());
$poz->setWartoscnetto($pozycja->getWartoscnetto());
$poz->setWartoscvat($pozycja->getWartoscvat());
$poz->setZrealizowane(false);
$em->persist($poz);
$em->flush();
}
}
$zadanie->getSession()->remove("koszyk");
}
}
//Wysłanie maila aktywacyjnego
$emailMessage = new \Swift_Message($em->getRepository(\App\Entity\Conf::class)->peek ("email-activation-account-title", "InforPol NET: Aktywacja konta."));
$emailMessage->setFrom ($em->getRepository(\App\Entity\Conf::class)->peek ("email-sender-return-address", "info@ndc.pl"), $em->getRepository(\App\Entity\Conf::class)->peek ("email-sender-name", "INFORPOL NET"))
->setTo ($u->getEmail(), $u->getNazwa())
->setBody (
$this->renderView("email/aktywacja_konta.html.twig", ["account" => $u, "key" => md5 ($u->getId() . date ("Y-m-d H:i:s", $u->getCrDate()->getTimestamp()))]),
'text/html'
);
$mailer->send($emailMessage);
return $this->render("rejestracja-ok.html.twig", [ "account" => $u, "czasAktywacji" => $em->getRepository(\App\Entity\Conf::class)->peek ("inactive-account-lifetime", 7) ]);
} else {
$log->debug("CREATENEWCSA", [$HRDMAKE]);
$em->refresh($u);
$em->remove($u);
$em->flush ();
$opcje ['alerts'] = [ "message" => print_r ($HRDMAKE, true) ];
return $this->render("rejestracja.html.twig", $opcje);
}
}
/**
* Zasób aktywuje konto
* @Route("/aktywacja/{key}", name="aktywacja-konta", methods={"GET"})
* @param \Doctrine\ORM\EntityManagerInterface $em
* @param \Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface $PHI
* @param \Psr\Log\LoggerInterface $log
* @param string $key
* @return Response
*/
public function activateAccount (\Doctrine\ORM\EntityManagerInterface $em, \Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface $PHI, \Psr\Log\LoggerInterface $log, string $key): Response {
$user = $em->getRepository (\App\Entity\User::class)->findByActivationKey ($key);
if ($user) {
if ($user->isPotwierdzenieMail()) {
return $this->render("aktywacja-ponowna-ok.html.twig", [ "user" => $user ]);
} else {
//$log->info ("AKTYWACJA! EMAIL: \"" . $user->getEmail () . "\", PASS: \"" . $user->getPassword () . "\"");
$user->setPotwierdzenieMail(true);
$user->setPassword($PHI->hashPassword ($user, $user->getPassword()));
$em->persist($user);
$em->flush ();
return $this->render("aktywacja-ok.html.twig", [ "user" => $user ]);
}
} else {
return $this->render("aktywacja-fail.html.twig");
}
}
/**
* Zasób wyświetla formularz profilu urzytkownika
* @Route ("/profil", name="my-profile", methods={"GET"})
* @IsGranted("ROLE_USER")
* @param \Doctrine\ORM\EntityManagerInterface $em
* @return Response
*/
public function getProfil (\Doctrine\ORM\EntityManagerInterface $em): Response {
return $this->render ("profil.html.twig", [
"kraje" => $em->getRepository(\App\Entity\Kraj::class)->findBy([], ["nazwa" => "ASC"])
]);
}
/**
* Zasób wyświetla dokonuje zmian w profilu i wyświetla formularz profilu urzytkownika
* @Route ("/profil", name="my-profile-post", methods={"POST"})
* @IsGranted("ROLE_USER")
* @param \App\Service\PassValidator $pv
* @param \Symfony\Component\HttpFoundation\Request $zadanie
* @param \Doctrine\ORM\EntityManagerInterface $em
* @param \Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface $PHI
* @return Response
*/
public function postProfil (\App\Service\PassValidator $pv, \Symfony\Component\HttpFoundation\Request $zadanie, \Doctrine\ORM\EntityManagerInterface $em, \Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface $PHI): Response {
$errors = [];
if (trim ($zadanie->get ("haslo1", "")) != "") {
if ($zadanie->get ("haslo1", "") != $zadanie->get ("haslo2", "")) {
$errors [] = [ "body" => "podane hasła są różne." ];
} else {
$test = $pv->isValid($em, $zadanie->get ("haslo1", ""));
if ($test !== true) {
$errors [] = [ "body" => $test ];
}
}
}
if (trim ($zadanie->get("nazwa", "")) == "") {
$errors [] = [ "body" => "Pole \"<b>Imię i Nazwisko lub Nazwa</b>\" nie moze być puste." ];
}
if (trim ($zadanie->get ("email_fakturowy", "")) != "") {
if (!filter_var (trim ($zadanie->get ("email_fakturowy", "")), FILTER_VALIDATE_EMAIL)) {
$errors [] = [ "body" => "Podany adres e-mail w polu \"<b>Adres e-mail na który będziemy wysyłać dokumenty księgowe</b>\" jest nieprawidlowy." ];
}
}
if ((trim ($zadanie->get ("nip", "")) == "") && (trim ($zadanie->get ("pesel", "")) == "")) {
$errors [] = [ "body" => "Proszę podać przynajmniej jeden numer identyfikacyjny. NIP lub PESEL." ];
}
if ($zadanie->get("kontakt-nazwa", NULL) != NULL) {
$pusta_nazwa = false;
$pusta_wartosc = false;
foreach ($zadanie->get ("kontakt-nazwa", NULL) as $index => $nazwa) {
$pusta_nazwa |= (trim ($nazwa) == "");
$pusta_wartosc |= (trim ($zadanie->get("kontakt-wartosc", NULL)[$index]) == "");
}
if ($pusta_nazwa) $errors [] = [ "body" => "W sekcji \"<b>Dodatkowe formy kontaktu</b>\" nie może występować pusta nazwa." ];
if ($pusta_wartosc) $errors [] = [ "body" => "W sekcji \"<b>Dodatkowe formy kontaktu</b>\" nie może występować pusta wartość." ];
}
if ($zadanie->get("adres_nazwa", NULL) == NULL) {
$errors [] = [ "body" => "Proszę podać przynajmniej jeden adres pocztowy." ];
} else {
$puste = [ "nazwa" => false, "kod" => false, "miasto" => false, "dom" => false ];
foreach ($zadanie->get ("adres_nazwa", NULL) as $index => $nazwa) {
$puste ['nazwa'] |= (trim ($nazwa) == "");
$puste ['kod'] |= (trim ($zadanie->get("adres_kod")[$index]) == "");
$puste ['miasto'] |= (trim ($zadanie->get("adres_miasto")[$index]) == "");
$puste ['dom'] |= (trim ($zadanie->get("adres_dom")[$index]) == "");
}
if ($puste ['nazwa']) $errors [] = [ "body" => "W sekcji \"<b>Adresy pocztowe</b>\" pole \"<b>Nazwa</b>\" nie może być puste." ];
if ($puste ['kod']) $errors [] = [ "body" => "W sekcji \"<b>Adresy pocztowe</b>\" pole \"<b>Kod pocztowy</b>\" nie może być puste." ];
if ($puste ['miasto']) $errors [] = [ "body" => "W sekcji \"<b>Adresy pocztowe</b>\" pole \"<b>Miejscowość</b>\" nie może być puste." ];
if ($puste ['dom']) $errors [] = [ "body" => "W sekcji \"<b>Adresy pocztowe</b>\" pole \"<b>Numer domu</b>\" nie może być puste." ];
}
if (count ($errors) > 0) {
return $this->render ("profil.html.twig", [
"messages" => $errors,
"kraje" => $em->getRepository(\App\Entity\Kraj::class)->findBy([], ["nazwa" => "ASC"])
]);
} else {
$em->persist ($this->getUser ());
$this->getUser ()->setNazwa(trim ($zadanie->get ("nazwa", "")));
if (trim ($zadanie->get ("haslo1", "")) != "") {
$this->getUser ()->setPassword($PHI->hashPassword ($this->getUser (), $zadanie->get("haslo1")));
}
if (trim ($zadanie->get ("nip", "")) != "") {
$this->getUser ()->setNIP (trim ($zadanie->get ("nip")));
} else {
$this->getUser ()->setNIP (NULL);
}
if (trim ($zadanie->get ("pesel", "")) != "") {
$this->getUser ()->setPESEL (trim ($zadanie->get ("pesel")));
} else {
$this->getUser ()->setPESEL (NULL);
}
if (trim ($zadanie->get ("sms", "")) != "") {
$this->getUser ()->setSMS (trim ($zadanie->get ("sms")));
} else {
$this->getUser ()->setSMS (NULL);
}
if (trim ($zadanie->get ("email_fakturowy", "")) != "") {
$this->getUser ()->setEmailFakturowy (trim ($zadanie->get ("email_fakturowy")));
} else {
$this->getUser ()->setEmailFakturowy (NULL);
}
if ($zadanie->get ("kontakt-nazwa", NULL) != NULL) {
$kontakty = [];
foreach ($zadanie->get ("kontakt-nazwa", NULL) as $index => $nazwa) {
$kontakty [] = [ "nazwa" => $nazwa, "wartosc" => $zadanie->get ("kontakt-wartosc", NULL)[$index]];
}
$this->getUser ()->setKontakty($kontakty);
} else {
$this->getUser ()->setKontakty (NULL);
}
$em->flush ();
//Usuwamy adresy
foreach ($this->getUser ()->getAdresy () as $adres) {
$jest = false;
foreach ($zadanie->get ("adres_id", NULL) as $index => $adr_id) {
if ($adres->getId () == intval ($adr_id)) {
$jest = true;
break;
}
}
if (!$jest) {
$em->remove($adres);
$em->flush ();
}
}
$em->refresh ($this->getUser ());
foreach ($zadanie->get ("adres_id", NULL) as $index => $adr_id) {
if (intval ($adr_id) != 0) {
//Edytujemy Adres
$adr_obj = $em->getRepository (\App\Entity\Adres::class)->find (intval ($adr_id));
$em->persist ($adr_obj);
$adr_obj->setNazwa($zadanie->get ("adres_nazwa", NULL)[$index]);
$adr_obj->setKraj($zadanie->get ("adres_kraj", NULL)[$index]);
$adr_obj->setKod($zadanie->get ("adres_kod", NULL)[$index]);
$adr_obj->setMiasto($zadanie->get ("adres_miasto", NULL)[$index]);
if (trim ($zadanie->get ("adres_ulica", NULL)[$index]) != "") {
$adr_obj->setUlica(trim ($zadanie->get ("adres_ulica", NULL)[$index]));
} else {
$adr_obj->setUlica(NULL);
}
$adr_obj->setDom($zadanie->get ("adres_dom", NULL)[$index]);
if (trim ($zadanie->get ("adres_lokal", NULL)[$index]) != "") {
$adr_obj->setLokal(trim ($zadanie->get ("adres_lokal", NULL)[$index]));
} else {
$adr_obj->setLokal(NULL);
}
$em->flush ();
} else {
//Dodajemy Adres
$adr_obj = new \App\Entity\Adres ();
$em->persist ($adr_obj);
$adr_obj->setNazwa($zadanie->get ("adres_nazwa", NULL)[$index]);
$adr_obj->setKraj($zadanie->get ("adres_kraj", NULL)[$index]);
$adr_obj->setKod($zadanie->get ("adres_kod", NULL)[$index]);
$adr_obj->setMiasto($zadanie->get ("adres_miasto", NULL)[$index]);
if (trim ($zadanie->get ("adres_ulica", NULL)[$index]) != "") {
$adr_obj->setUlica(trim ($zadanie->get ("adres_ulica", NULL)[$index]));
} else {
$adr_obj->setUlica(NULL);
}
$adr_obj->setDom($zadanie->get ("adres_dom", NULL)[$index]);
if (trim ($zadanie->get ("adres_lokal", NULL)[$index]) != "") {
$adr_obj->setLokal(trim ($zadanie->get ("adres_lokal", NULL)[$index]));
} else {
$adr_obj->setLokal(NULL);
}
$adr_obj->setUser($this->getUser ());
$em->flush ();
}
}
$em->refresh ($this->getUser ());
return $this->render ("profil.html.twig", [
"alerts" => [[ "icon" => "bi-check", "class" => "success", "message" => "Twoje dane zostały zaktualizowane." ]],
"kraje" => $em->getRepository(\App\Entity\Kraj::class)->findBy([], ["nazwa" => "ASC"])
]);
}
}
}