Beispiel #1
0
    def insert(parcel):
        """
        Insert parcel into database

        Parameters
        -----------
        parcel : ParcelEntity
        """
        if not isinstance(parcel, ParcelEntity):
            raise Exception('Input must be type of ParcelEntity')
        sql = 'INSERT INTO dostawy.przesylki (przesylka_nadawca, przesylka_odbiorca,' \
              'przesylka_miastoDostarczenia, przesylka_dataNadania,' \
              'przesylka_dataDostarczenia) VALUES (%s,%s,%s,%s,%s);'
        val = (parcel.sender, parcel.receiver, parcel.delivery_city,
               parcel.sent_date, parcel.delivery_date)
        DBconnector.execute_query_insert(sql, val)
Beispiel #2
0
 def insert_many(parcel_list):
     """
     Insert list of parcels into database.
     Parameters
     ----------
     parcel_list : list[ParcelEntity]
     """
     values = []
     sql = 'INSERT INTO dostawy.przesylki (przesylka_nadawca, przesylka_odbiorca,' \
           'przesylka_miastoDostarczenia, przesylka_dataNadania,' \
           'przesylka_dataDostarczenia) VALUES (%s,%s,%s,%s,%s);'
     for parcel in parcel_list:
         val = (parcel.sender, parcel.receiver, parcel.delivery_city,
                parcel.sent_date, parcel.delivery_date)
         values.append(val)
     DBconnector.execute_query_insert_many(sql, values)
Beispiel #3
0
    def select_courier_by_parcel(parcel_id):
        """
        Select Courier by ID.

        Parameters
        ----------
        parcel_id : str

        Returns
        -------
        courier_list : list[CourierEntity]
        """
        sql = 'SELECT * FROM dostawy.kurierzy k ' \
              'LEFT JOIN dostawy.przesylki p ' \
              'ON k.kurier_aktualnaPrzesylka = p.przesylka_ID WHERE kurier_aktualnaPrzesylka = %s;'
        val = (parcel_id, )
        rows = DBconnector.fetch_query_parameters(sql, val)
        courier_list = []
        for (kurier_ID, kurier_miasto, kurier_czyDostepny,
             kurier_aktualnaPrzesylka, przesylka_ID, przesylka_nadawca,
             przesylka_odbiorca, przesylka_miastoDostarczenia,
             przesylka_dataNadania, przesylka_dataDostarczenia) in rows:
            p = ParcelEntity(przesylka_ID, przesylka_nadawca,
                             przesylka_odbiorca, przesylka_miastoDostarczenia,
                             przesylka_dataNadania, przesylka_dataDostarczenia)
            c = CourierEntity(kurier_ID, kurier_miasto, kurier_czyDostepny, p)
            courier_list.append(c)
        return courier_list
Beispiel #4
0
    def select_last():
        """
        Select all elements from Parcel (przesylki) table

        Returns
        -------
        parcel_list : list[ParcelEntity]
        """
        sql = 'SELECT * FROM dostawy.przesylki ORDER by przesylka_ID DESC LIMIT 1;'
        rows = DBconnector.fetch_query(sql)
        return _wrap_in_parcel_list(rows)
Beispiel #5
0
    def select_by_receiver(receiver_name):
        """
        Select parcels by receiver name

        Parameters
        ----------
        receiver_name : str

        Returns
        -------
        parcel_list : list[ParcelEntity]
        """
        sql = "SELECT * FROM dostawy.przesylki WHERE przesylka_odbiorca = %s;"
        val = (receiver_name,)
        rows = DBconnector.fetch_query_parameters(sql, val)
        return _wrap_in_parcel_list(rows)
Beispiel #6
0
    def select_by_sender(sender_name):
        """
        Select Parcels by sender_name

        Parameters
        ----------
        sender_name : str

        Returns
        -------
        parcel_list : list[ParcelEntity]
        """
        sql = "SELECT * FROM dostawy.przesylki WHERE przesylka_nadawca = %s;"
        val = (sender_name,)
        rows = DBconnector.fetch_query_parameters(sql, val)
        return _wrap_in_parcel_list(rows)
Beispiel #7
0
    def select_by_id(parcel_id):
        """
        Select Parcel by ID.

        Parameters
        ----------
        parcel_id : str

        Returns
        -------
        parcel_list : list[ParcelEntity]
        """
        sql = "SELECT * FROM dostawy.przesylki WHERE przesylka_ID = %s;"
        val = (parcel_id,)
        rows = DBconnector.fetch_query_parameters(sql, val)
        return _wrap_in_parcel_list(rows)
Beispiel #8
0
    def select_by_city(city):
        """
        Select parcels by receive city

        Parameters
        ----------
        city : str
            City where parcel was/will be received

        Returns
        -------
        parcel_list : list[ParcelEntity]
        """
        sql = "SELECT * FROM dostawy.przesylki WHERE przesylka_miastoDostarczenia = %s;"
        val = (city,)
        rows = DBconnector.fetch_query_parameters(sql, val)
        return _wrap_in_parcel_list(rows)
Beispiel #9
0
    def update_courier_status(status, parcel_id):
        """
        Updates couriers status (if is available)

        Parameters
        ----------
        status : str
            'Tak' - is available; 'Nie' - is not available
        parcel_id : str
            Parcel ID
        """
        sql = "UPDATE dostawy.kurierzy  SET kurier_czyDostepny = %s, kurier_aktualnaPrzesylka = NULL " \
              "WHERE kurier_ID = " \
              "(SELECT kurier_ID FROM " \
              "(SELECT kurier_ID FROM dostawy.kurierzy WHERE kurier_aktualnaPrzesylka = %s LIMIT 1) as tempTable);"
        val = (status, parcel_id)
        return DBconnector.execute_query_update(sql, val)
Beispiel #10
0
    def delivery_confirmation(parcel_id, confirm_date):
        """
        Updates parcel, by setting delivery date to parcel

        Parameters
        ----------
        parcel_id : str
        confirm_date : date

        Returns
        -------
        row_count : int
            count of rows that was affected
        """
        sql = "UPDATE dostawy.przesylki " \
              "SET przesylka_dataDostarczenia = %s WHERE przesylka_ID = %s;"
        val = (confirm_date, parcel_id)
        return DBconnector.execute_query_update(sql, val)
Beispiel #11
0
    def select_by_status(status):
        """
        Select parcels by input status ('delivered', 'send', 'passed to courier'). Executes stored procedure that
        distinguish status and returns adequate select

        Parameters
        ----------
        status : str

        Returns
        -------
        parcel_list : list[ParcelEntity]
        """
        sql = 'checkStatus'
        val = [status]
        rows = DBconnector.call_procedure(sql, val)
        for r in rows:
            return _wrap_in_parcel_list(r.fetchall())
Beispiel #12
0
    def select_by_receive_date(begin_date, end_date):
        """
        Select parcels by receive date interval

        Parameters
        ----------
        begin_date : date
            interval start date
        end_date : date
            interval stop date

        Returns
        -------
        parcel_list : list[ParcelEntity]
        """
        sql = "SELECT * FROM dostawy.przesylki WHERE przesylka_dataDostarczenia > %s AND przesylka_dataDostarczenia < %s;"
        val = (begin_date, end_date)
        rows = DBconnector.fetch_query_parameters(sql, val)
        return _wrap_in_parcel_list(rows)
Beispiel #13
0
    def update_free_courier_parcel(parcel_id):
        """
        Add parcel to first free courier

        Parameters
        ----------
        parcel_id : str

        Returns
        -------
        row_count : int
            Quantity of rows that were updated
        """
        sql = "UPDATE dostawy.kurierzy SET kurier_czyDostepny = 'NIE', kurier_aktualnaPrzesylka = %s " \
              "WHERE kurier_ID = " \
              "(SELECT kurier_ID FROM " \
              "(SELECT kurier_ID FROM dostawy.kurierzy WHERE kurier_czyDostepny = 'TAK' LIMIT 1) as tempTable);"
        val = (parcel_id, )
        return DBconnector.execute_query_update(sql, val)
Beispiel #14
0
    def select_all():
        """
        Select all elements from Courier (kurierzy) table

        Returns
        -------
        courier_list : list[CourierEntity]
        """
        sql = 'SELECT * FROM dostawy.kurierzy k ' \
              'LEFT JOIN dostawy.przesylki p ' \
              'ON k.kurier_aktualnaPrzesylka = p.przesylka_ID;'
        rows = DBconnector.fetch_query(sql)
        courier_list = []
        for (kurier_ID, kurier_miasto, kurier_czyDostepny,
             kurier_aktualnaPrzesylka, przesylka_ID, przesylka_nadawca,
             przesylka_odbiorca, przesylka_miastoDostarczenia,
             przesylka_dataNadania, przesylka_dataDostarczenia) in rows:
            p = ParcelEntity(przesylka_ID, przesylka_nadawca,
                             przesylka_odbiorca, przesylka_miastoDostarczenia,
                             przesylka_dataNadania, przesylka_dataDostarczenia)
            c = CourierEntity(kurier_ID, kurier_miasto, kurier_czyDostepny, p)
            courier_list.append(c)
        return courier_list