diff --git a/app/Api/V1/Controllers/PageController.php b/app/Api/V1/Controllers/PageController.php index 4eca178..b3f7dc2 100644 --- a/app/Api/V1/Controllers/PageController.php +++ b/app/Api/V1/Controllers/PageController.php @@ -124,7 +124,7 @@ public function store(Request $request) $rules = [ 'title' => 'required|max:200', 'status' => 'in:Active,Inactive', - 'description' => 'required|max:500', + 'content' => 'required', ]; $validator = Validator::make($request->all(), $rules); if ($validator->fails()) { @@ -217,7 +217,6 @@ public function update(Request $request, int $id) $rules = [ 'title' => 'max:200', 'status' => 'in:Active,Inactive', - 'description' => 'max:500', ]; $validator = Validator::make($request->all(), $rules); if ($validator->fails()) { diff --git a/app/Api/V1/Transformers/PageTransformer.php b/app/Api/V1/Transformers/PageTransformer.php index bae0092..1e636f7 100644 --- a/app/Api/V1/Transformers/PageTransformer.php +++ b/app/Api/V1/Transformers/PageTransformer.php @@ -10,7 +10,9 @@ public function transform($item) 'id' => $item['id'], 'title' => $item['title'], 'status' => $item['status'], - 'description' => $item['description'], + 'content' => $item['content'], + 'logo' => $item['logo'], + 'parent_id' => $item['parent_id'], 'lastUpdate' => $item['updated_at']->toDateTimeString(), ]; } diff --git a/app/Helpers/CsvHandler.php b/app/Helpers/CsvHandler.php index 2089b2b..9931783 100644 --- a/app/Helpers/CsvHandler.php +++ b/app/Helpers/CsvHandler.php @@ -6,10 +6,7 @@ class CsvHandler { - protected $path = ''; - protected $delimiter = ','; - - public static function convertToArray($path) + public static function convertToArray($path, $associative = false) { if (!file_exists($path) || !is_readable($path)) { return FALSE; @@ -18,19 +15,26 @@ public static function convertToArray($path) $data = []; if (($handle = new SplFileObject($path, 'r')) !== FALSE) { - $data = self::convertFileToArray($handle); + $data = self::convertFileToArray($handle, $associative); $handle = null; } return $data; } - public static function convertFileToArray(SplFileObject $file) + public static function convertFileToArray(SplFileObject $file, $associative = false) { $data = []; $file->setFlags(SplFileObject::READ_CSV | SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE); + if (!$file->eof() && $associative) { + $columns = $file->fgetcsv(); + } while (!$file->eof()) { - $data[] = $file->fgetcsv(); + $row = $file->fgetcsv(); + if ($associative) { + $row = array_combine($columns, $row); + } + $data[] = $row; } return $data; diff --git a/app/Page.php b/app/Page.php index c30331e..864cf9d 100644 --- a/app/Page.php +++ b/app/Page.php @@ -9,7 +9,7 @@ class Page extends Model const ACTIVE = 'Active'; const INACTIVE = 'Inactive'; - protected $fillable = ['title', 'status', 'description', 'user_id']; + protected $fillable = ['title', 'status', 'content', 'logo', 'user_id', 'parent_id']; public function user() { diff --git a/database/migrations/2019_07_27_120740_update_pages_table.php b/database/migrations/2019_07_27_120740_update_pages_table.php new file mode 100644 index 0000000..797e1c7 --- /dev/null +++ b/database/migrations/2019_07_27_120740_update_pages_table.php @@ -0,0 +1,39 @@ +string('logo'); + $table->unsignedInteger('parent_id'); + $table->foreign('parent_id')->references('id')->on('pages'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + DB::statement('ALTER TABLE pages CHANGE content description VARCHAR(500)'); + + Schema::table('pages', function (Blueprint $table) { + $table->dropColumn('logo'); + $table->dropForeign('pages_parent_id_foreign'); + $table->dropColumn('parent_id'); + }); + } +} diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index 659bf5d..c202378 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -8,6 +8,7 @@ use App\User; use App\City; use App\County; +use App\Page; class DatabaseSeeder extends Seeder { @@ -25,6 +26,7 @@ public function run() Incident::truncate(); City::truncate(); County::truncate(); + Page::truncate(); Precinct::truncate(); User::getQuery()->delete(); Eloquent::unguard(); diff --git a/database/seeds/PagesTableSeeder.php b/database/seeds/PagesTableSeeder.php index 04050d6..9bb9d5b 100644 --- a/database/seeds/PagesTableSeeder.php +++ b/database/seeds/PagesTableSeeder.php @@ -1,8 +1,8 @@ $faker->text(255), - 'status' => $faker->randomElement(['Active', 'Inactive']), - 'description' => $faker->realText(500), - 'user_id' => 1 - ]); + $data = CsvHandler::convertToArray('resources/files/pages/pages.csv', true); + foreach ($data as $row) { + Page::create($row); } } } diff --git a/resources/files/pages/pages.csv b/resources/files/pages/pages.csv new file mode 100644 index 0000000..82139f3 --- /dev/null +++ b/resources/files/pages/pages.csv @@ -0,0 +1,184 @@ +id,title,status,content,logo,parent_id +1,Adaugă o sesizare,Active,"

+ Cum fac o sesizare? +

+

+ Vrei să trimiți o sesizare, dar nu ești sigur dacă s-a încălcat o + regulă? Verifică mai jos, în ghidul alegătorului, care sunt regulile + de vot la referendum, pentru a transmite informații corecte și + utile.
+ + Pentru a ne asigura ca sesizările privesc exact subiectul + referendumului pentru familie din 2018, acestea vor fi postate pe + site după o verificare făcută de echipa proiectului. +

",,0 +2,Reguli Vot,Inactive,"

+ Sesizează orice incident +

+

+ Pe 26 mai 2019 au loc alegerile europarlamentare și referendumul național pe justiție. Dacă ai sesizat + nereguli în timpul campaniei sau în ziua votului postează aici. Ai văzut mesaje care instigă la ură, ai + văzut campanii derulate în mod ilegal sau alte comunicări care contravin principiilor democratice, probleme + în secția în care ai votat etc? Trimite o sesizare folosind formularul de mai jos. +

+ } + primary + />",,0 +3,Informații generale,Active,"

Informații generale

+

Cine are dreptul de a vota la referendumul pentru familie 2018?

+

+ Au dreptul de a participa la referendum toți cetățenii români care au împlinit vârsta de 18 ani până în ziua referendumului inclusiv, cu excepția debililor sau a alienaților mintal puși sub interdicție, precum și a persoanelor condamnate prin hotărâre judecătorească definitivă la pierderea drepturilor electorale.
+ Art 4 din Legea 3/2000 +

",info,2 +4,Unde votăm,Active,"

Unde votăm

+

Dacă vă aflați pe teritoriul României în timpul referendumului pentru familie 2018:

+ +

+ Art 21, Legea 3/2000
+ Dacă sunteţi omis/ă din lista permanentă, veţi fi înscris/ă pe lista suplimentară.
+ Lista cu secțiile de votare poate fi găsită aici. +

+

Dacă vă aflați în diaspora în timpul referendumului pentru familie 2018:

+

+ Puteți vota la oricare din secțiile de votare deschise pe lângă ambasade, consulate sau institute culturale, pe liste suplimentare. Votul nu este condiționat de înscrierea în Registrul electoral și nu vor exista liste permanente. Conform OUG 86/2018 se pot înființa și alte secții de votare, cu acordul autorităților străine. +

+

+ Harta secțiilor de votare din străinătate poate fi consultată aici. +

",location,2 +5,Programul de votare,Active,"

Programul de votare

+

Referendumul pentru familie se desfășoară pe parcursul a două zile - pe 6 și 7 octombrie 2018, iar secțiile de votare sunt deschise între orele 7:00 și 21:00. La ora 21:00 mai pot vota doar alegătorii care se află în sala unde se votează.

",clock,2 +6,Buletinul de vot,Active,"

Cum arată un buletin de vot nul

+

Sunt nule buletinele de vot care:

+ +

+ Dacă ștampila depășește laturile pătratului, însă opțiunea este evidentă, buletinul nu va fi socotit nul.
+ Buletinele nule nu intră în calculul voturilor valabil exprimate. +

",system,2 +7,Votarea,Active,"

Cum votezi?

+ +

+ Art 37 din Legea 3/2000
+ Alegătorul care din motive temeinice nu poate vota singur poate fi însoțit în cabina de vot. Însoțitorul nu ar trebuie să fie din rândul persoanelor acreditate, al membrilor biroului electoral al secţiei de votare sau al candidaţilor.
+ Art 39 (2) din Legea 3/2000 +

+

Rețineți că:

+ ",vote,2 +8,Urna specială,Active,"

Solicitarea urnei speciale

+

+ Alegătorii care nu se pot deplasa la secția de votare din cauză de boală sau invaliditate pot solicita urna specială (mobilă) de la secţia de votare cea mai apropiată de locul în care se află în ziua alegerilor printr-o cerere scrisă însoțită de documente justificative. În ziua alegerilor, o echipă formată din doi membri ai biroului electoral se va deplasa sub paza personalului MAI la locul unde se află alegătorul, cu urna specială și materialele necesare votării. Fiecare secție de votare are o singură urnă specială, care trebuie să fie la ora 21:00 înapoi la secția de votare. Alegătorii care nu se pot deplasa la sediul secţiei de votare pot trimite cererile scrise prin intermediul altor persoane sau prin intermediul personalului de specialitate din unităţile medicale unde se află internaţi. +

+

+ Având în vedere că legea nu specifică clar termenele limită pentru depunerea cererilor pentru urna specială, vă sfătuim să le depuneți pe 5 octombrie, seara, între 18 și 20, când membrii biroului electoral al secției de votare se întrunesc la sediul acesteia. Din experiențele trecute, unii președinți de secții de votare nu acceptă cereri în ziua votului. +

+

+ Art 31 (4) din Legea 3/2000
+ Pentru persoanele netransportabile din cauză de boală sau invaliditate, la cererea celor aflați în această situație sau la cererea organelor de conducere ale instituțiilor sanitare sau de ocrotiri sociale, în care cei netransportabili se află internați, președintele biroului electoral al secției de votare desemnează din cadrul biroului un număr de membri care se deplasează cu o urnă specială și cu materialul necesar votării la locul unde se află cel în cauză, pentru a se efectua votarea.
+ Art 40 din Legea 3/2000 +

",box,2 +9,Documente necesare,Active,"

De ce documente am nevoie ca sa pot vota

+

În ţară, alegătorii votează în baza

+ +

+ În străinătate: +

+ ",building,2 +10,Tipuri de infracțiuni,Active,"

În timpul campaniei pentru referendum, probabil cea mai frecventă problemă întâlnită va fi cea legată de utilizarea unor mesaje instigatoare la ură sau care promovează valori care încalcă principiile democrației și drepturile omului. Dacă auzi de astfel de incidente, de campanie în școli sau în instituții publice, de presiuni ale angajatorilor sau ale autorităților locale, te rugăm să ne informezi cât mai rapid. Problemele legate de campanie le poți reclama la birourile electorale de circumscripție județeană.

+

Care sunt cele mai frecvente nereguli care pot apărea pe parcursul votului la referendum: Presiuni ale administrației locale sau ale altor instituții / aglomerație la secția de votare

+ +

Indicii pentru potențiale fraude/abuzuri

+ +

Listele electorale

+ +

Legate de secția de votare/ziua votului

+ +

Numărarea voturilor (pentru persoanele acreditate)

+ +

Informații preluate parțial din Manualul de observare a alegerilor, OSCE/ODIHR; completate cu informații din experiențele anterioare de observare. Vezi și Manualul Observatorului.

",police,2 +11,Despre noi,Active," + + +

+ Monitorizare Vot este un proiect Code for Romania. Scopul nostru este dezvoltarea unui instrument IT prin care observatorii electorali i să poată transmite simplu și rapid sesizările lor către ONG-ul care i-a acreditat. În plus ,oferim cetățenilor o platformă foarte ușor de folosit unde se pot face auziți atunci când au de semnalat o neregulă în desfășurarea alegerilor. Ne dorim astfel să-i încurajăm pe oameni să se implice în procesul electoral, pentru alegeri corecte în toată țara. Partenerii proiectului: EFOR, Geeks for Democracy, Funky Citizens, Observatorul Electoral, Centrul pentru Resurse Civice și Centrul pentru Studiul Democratiei +

+

+ Monitorizare Vot a câștigat premiul I pentru Participare Civică în 2017 la Gala Societății Civile. Aplicația de observare a alegerilor va fi utilizată în Polonia, în cadrul alegerilor din octombrie 2018. Informații despre versiunea internațională a aplicației sunt disponibile aici. +

+ + + +

Code for Romania este o organizație neguvernamentală, neafiliată politic și apolitică, înființată în 2016. Code for Romania își propune să formeze o comunitate de profesioniști în IT care să creeze soluții digitale ce rezolvă probleme ale societății. Misiunea noastră este să dăm oamenilor informaţiile, mijloacele şi curajul să se implice mai mult în rezolvarea problemelor societăţii. Proiectele Code for Romania sunt dezvoltate pe bază de voluntariat și în format open-source.

+ +

Notă:

+

Toate informațiile prezentate pe acest website sunt bazate pe sesizările primite de la utilizatori. Sursa pentru regulile de vot este platforma votcorect.ro. Echipa de administrare a website-ului face o minimă verificare a sesizărilor înainte de publicare, pentru a se asigura ca acestea au legatura cu subiectului alegerilor, dar nu își asumă responsabilitatea pentru conținutul și veridicitatea sesizărilor transmise de către utilizatori. Scopul platformei este acela de a informa cetățenii și de a oferi un spațiu de exprimare celor care doresc să sesizeze eventuale tentative de fraudă electorală. Platforma și statisticile aferente vor fi promovate către mass-media. Echipa Code for Romania nu își asumă responsabilitatea pentru transmiterea acestor sesizări mai departe către autoritățile competente și nici pentru oferirea de răspunsuri la sesizarile utilizatorilor. Pentru aceasta vă rugăm să va adresati Biroul Electoral de Circumscriptie sau Biroul Electoral Central.

+
",,0 \ No newline at end of file