Delivery Service

Descrizione

il servizio deve permettere con facilita’ la possibilita’ per un utente di trovare i ristoranti/negozi/bar che fanno attivita’ di consegne e prese ordini.
L’utente puo’ inoltre mettersi in contatto con l’attivita’, effettuare un ordine (articoli, indirizzo consegna, ora indicativa di consegna) e decidere se prenderlo in negozio oppure, se possibile scegliere per la consegna a casa.

Inizializzazione progetto

  • Installare le dipendenze Composer

    composer install

  • Installare i pacchetti npm

    npm i

  • Generare le chiavi per l’applicazione

    php artisan key:generate

  • Creare un database ed aggiungere i dati di connessione in .env
  • Copiare le variabili non-standard da .env.example in .env
  • Creare link a Storage

    php artisan storage:link

  • Lanciare le migration

    php artisan migrate

  • Inizializzare Laravel Passport

    php artisan passport:install
    php artisan passport:keys

  • Lanciare il seeder dei comuni italiani

    php artisan db:seed --class=ItalianDistrictSeeder

  • Lanciare seeder per Role e Type

    php artisan db:seed --class=RoleSeeder
    php artisan db:seed --class=RetailerTypeSeeder
    php artisan db:seed --class=CategorySeeder
    php artisan db:seed --class=OrderStatusSeeder
    composer dump-autoload

  • Spostarsi nella directory del progetto e avviare il server

    php artisan serve

  • Iniziare il watch di JS per attualizzare eventuali modifiche

    npm run watch

API

Utenti

endpoints

Method Endpoint Description Authorization Controller Action Status
GET /api/users return list of all users administrator UserController index done
GET /api/users/{user} return specified user std_user UserController show done
POST /api/users/create create a new user administrator UserController store done
PUT /api/users/{user} edit user std_user UserController update done
DELETE /api/users/{user} delete user std_user UserController destroy done

Negozi

endpoints

Method Endpoint Description Controller Action Status
GET /api/retails lista di tutti i negozi RetailerController index done
GET /api/retails/{zip} lista di tutti i negozi che sercvono in quel particolare cap RetailerController index_by_zip done
POST /api/retails/create crea un nuovo negozi e lo associa ad un utente(publisher) RetailerController store done
GET /api/retails/{id} ottieni le informazion iriguardanti un nuovo negozio RetailerController show done
PUT /api/retails/{id} modifica negozio RetailerController update done
DELETE /api/retails/{id} elimina negozio e tutti i dati ad esso associati RetailerController destroy done

Articoli

endpoints

Method Endpoint Description Authorization Controller Action Status
GET /api/retails/{id}/items mostra una lista di tutti gli articoli riferiti al negizio // ItemController index done
GET /api/retails/{id}/items/{id} mostra informazioni riguardanti l’articolo // ItemController show done
POST /api/retails/{id}/items/create crea un nuovo articolo std_user ItemController store done
DELETE /api/retails/{id}/items/{id} elimina articolo e tutti i dati ad esso associati std_user ItemController update done
UPDATE /api/retails/{id}/items/{id} modifica articolo std_user ItemController destroy done

Ingredienti

endpoints

Method Endpoint Description
GET /api/retails/{id}/items/{id}/ingredients mostra una lista di tutti gli ingredienti riferiti all’articolo
POST /api/retails/{id}/items/{id}/ingredients/create crea un nuovo ingrediente
GET /api/retails/{id}/items/{id}/ingredients/{id} mostra informazioni riguardanti l’ingrediente
DELETE /api/retails/{id}/items/{id}/ingredients/{id} elimina ingrediente
UPDATE /api/retails/{id}/items/{id}/ingredients/{id} modifica articolo

Ordini (lato negoziante)

endpoints

Method Endpoint Description Authorization Controller Action Status
GET /api/retails/{id}/orders mostra una lista di tutti gli ordini riferiti al negoziante ————- ———- —— ——
GET /api/retails/{id}/orders/{id} dettaglio ordine ————- ———- —— ——

Ordini (lato utente)

endpoints

Method Endpoint Description Authorization Controller Action Status
GET /api/orders lista di tutti gli ordini di un utente // OrderController index done
GET /api/orders/{id} mostra informazioni riguradanti l’ordine // OrderController show done
POST /api/orders/create crea un nuovo ordine std_user OrderController store done
DELETE /api/orders/{id} elimina ingrediente std_user OrderController update done
UPDATE /api/orders/{id} modifica articolo std_user OrderController destroy done

Indirizzi (lato utente)

endpoints

Method Endpoint Description Authorization Controller Action Status
GET /api/adresses lista di tutti gli indirizzi di un utente // AddressController index done
POST /api/adresses/create crea un nuovo indirizzo // AddressController show done
GET /api/adresses/{id} mostra informazioni riguradanti indirizzo std_user AddressController store done
DELETE /api/adresses/{id} elimina indirizzo std_user AddressController update done
UPDATE /api/adresses/{id} modifica indirizzo std_user AddressController destroy done

Comuni

endpoints

Method Endpoint Description Controller Action Status
GET /api/districts/{district} ritorna una lista (limit 10) dei comuni in base ai caratteri del nome digitati ItalianDistrictController index_by_query done
GET /api/zip/{zip} ritorna una lista (limit 10) dei comuni in base ai caratteri del cap digitati ItalianDistrictController show_query done

Strutture Dati

Retailer->info

{
    "description": "",
    "phone": "",
    "email": "",
    "zip_codes": [],
    "min_order":"",
    "social": {
        "facebook": "",
        "twitter": "",
        "instagram": ""
    },
    "im": {
        "whatsapp": "",
        "fb_messenger": "",
        "telegram": ""
    },
    "geo": {
        "lat": "",
        "lng": ""
    },
    "timeslots": [
        {
            "id": 1,
            "name": "Lunedì",
            "opening_schedule":"",
            "delivery_schedule":"",
            "takeaway_schedule":"",
            "delivery_hours": [
                {
                    "start": "",
                    "end": ""
                }
            ],
            "takeaway_hours": [
                {
                    "start": "",
                    "end": ""
                }
            ],
            "opening_hours": [
                {
                    "start": "",
                    "end": ""
                }
            ]
        },
        ...
        {
            "id": 7,
            "name": "Domenica",
            "opening_schedule":"",
            "delivery_schedule":"",
            "takeaway_schedule":"",
            "delivery_hours": [
                {
                    "start": "",
                    "end": ""
                }
            ],
            "takeaway_hours": [
                {
                    "start": "",
                    "end": ""
                }
            ],
            "opening_hours": [
                {
                    "start": "",
                    "end": ""
                }
            ]
        }
    ]
}

PWA

Workbox:

https://developers.google.com/web/tools/workbox

Set manifest,json in ‘/public’ folder

Install workbox:
> npm install -g workbox-cli

launch wizard from the root folder > workbox wizard

  • select ‘public’ folder

generate service worker file: > workbox generateSW

query to fix database:

UPDATE items
SET info = '{"weight":{"unit":"","value":"","price":""},"size":{"unit":"","value":"","price":""},"size_list":[],"color_list":[]}';

UPDATE items
SET variation = '{"color_list":[],"size_list":[],"composition":[]}';

docker postgre

docker run --name dev-postgres \
    -e POSTGRES_USER=postgreuser \
    -e POSTGRES_PASSWORD=123456 \
    -e PGDATA=/var/lib/postgresql/data/pgdata \
    -p 5432:5432 \
    -d postgres

php artisan make:migration create_item_images_table –create=item_images

php artisan make:migration add_variation_to_items

GitHub

View Github