class Order(object):
    def __init__(
            self,
            id,
            ticket,
            status,
            title,
            note,
            id_metaservice,
            is_global,
            is_visible,
            service,
            service_category,
            time_created,
            time_placed,
            time_start=None,
            time_start_predicted=None,
            time_finish_predicted=None,
            time_start_real=None,
            time_finish_real=None,
            order_place_type=None,
            order_place_start=None,
            order_place_start_gps=None,
            order_place_start_real=None,
            order_place_start_real_gps=None,
            order_place_finish_predicted=None,
            order_place_finish_predicted_gps=None,
            order_place_finish_real=None,
            order_place_finish_real_gps=None,
            predicted_price=None,
            real_price=None,
            payment_transaction_id=None,
            rating_id=None,
            provider=None,
            provider_screen_name=None,
            receiver=None,
            receiver_screen_name=None,
            client=None,
            resource=None,
            attempts=None,
            asap=None,
            money_limit=None,
            tasks=None,
            proceed_before_arrival=False,
            confirmation=False
    ):
        self.id = id
        self.ticket = ticket
        self.status = status
        self.title = title
        self.note = note
        self.id_metaservice = id_metaservice
        self.is_global = is_global
        self.is_visible = is_visible
        self.service = service
        self.service_category = service_category
        self.time_created = time_created
        self.time_placed = time_placed
        self.time_start = time_start
        self.time_start_predicted = time_start_predicted
        self.time_finish_predicted = time_finish_predicted
        self.time_start_real = time_start_real
        self.time_finish_real = time_finish_real
        self.order_place_type = order_place_type
        self.order_place_start = order_place_start
        self.order_place_start_gps = order_place_start_gps
        self.order_place_start_real = order_place_start_real
        self.order_place_start_real_gps = order_place_start_real_gps
        self.order_place_finish_predicted = order_place_finish_predicted
        self.order_place_finish_predicted_gps = order_place_finish_predicted_gps
        self.order_place_finish_real = order_place_finish_real
        self.order_place_finish_real_gps = order_place_finish_real_gps
        self.predicted_price = predicted_price
        self.real_price = real_price
        self.payment_transaction_id = payment_transaction_id
        self.rating_id = rating_id
        self.provider = provider
        self.provider_screen_name = provider_screen_name
        self.receiver = receiver
        self.receiver_screen_name = receiver_screen_name
        self.client = client
        self.resource = resource
        self.attempts = attempts
        self.asap = asap
        self.money_limit = money_limit
        self.tasks = tasks
        self.proceed_before_arrival = proceed_before_arrival
        self.confirmation = confirmation

    def __str__(self):
        return "{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}, {14}, {15}, {16}, {17}, {18}, {19}, {20}, {21}, {22}, {23}, {24}, {25}, {26}, {27}, {28}, {29}, {30}, {31}, {32}, {33}, {34}, {35}, {36}, {37}, {38}".format(
            self.id,
            self.ticket,
            self.status,
            self.title,
            self.note,
            self.id_metaservice,
            self.is_global,
            self.is_visible,
            self.service,
            self.service_category,
            self.time_created,
            self.time_placed,
            self.time_start,
            self.time_start_predicted,
            self.time_finish_predicted,
            self.time_start_real,
            self.time_finish_real,
            self.order_place_type,
            self.order_place_start,
            self.order_place_start_gps,
            self.order_place_start_real,
            self.order_place_start_real_gps,
            self.order_place_finish_predicted,
            self.order_place_finish_predicted_gps,
            self.order_place_finish_real,
            self.order_place_finish_real_gps,
            self.predicted_price,
            self.real_price,
            self.payment_transaction_id,
            self.rating_id,
            self.provider,
            self.provider_screen_name,
            self.receiver,
            self.receiver_screen_name,
            self.client,
            self.resource,
            self.attempts,
            self.asap,
            self.money_limit,
            self.tasks,
            self.proceed_before_arrival,
            self.confirmation
        )


# Тестовый класс User и Address (ВАЖНО!!!) поля классов должны называться также как и поля json объекта
'''
#Full json order example
https://wiki.sharix-app.org/doku.php/open/tech/dev/sharix_open_-_primery_json

{

"ticket": 123,
"status": 111,

"priority": 1, 
"title": "123",
"note": "123",
"due_date": 2023-05-15T17:16:22.955601Z,

"id_metaservice": 1,
"is_global": false,
"is_visible": false,
"service": 1,
"service_category": 1,

"status_changed_date": "2023-05-15T17:16:22.955601Z",
"time_placed": "2023-05-15T16:40:32.179777Z",
"time_start": "2023-05-15T16:40:32.179777Z",
"time_start_predicted": "2023-05-15T16:40:32.179777Z",
"time_finish_predicted": "2023-05-15T16:40:32.179777Z",
"time_start_real": "2023-05-15T16:40:32.179777Z",
"time_finish_real": "2023-05-15T16:40:32.179777Z",

"order_place_type": "address",
"order_place_start": "р-н Беговой",
"order_place_start_gps": "55.751941, 37.607513",
"order_place_start_sector": 4,
"order_place_start_real": "р-н Беговой",
"order_place_start_real_gps": "55.751941, 37.607513",
"order_place_finish_predicted": "р-н Мещанский",
"order_place_finish_predicted_gps": "55.751941, 37.607513",
"order_place_finish_sector": 4,
"order_place_finish_real": "р-н Мещанский",
"order_place_finish_real_gps": "55.751941, 37.607513",

"predicted_price": 1000,
"real_price": 1001,
"payment_transaction_id": 1,
"rating_id": 1,

"provider": 1,
"provider_screen_name": "Vasya Ispolnitelev",
"receiver": 1,
"receiver_screen_name": "Marfa Clientovna",
"client": 1,
"client_screen_name": "Fedor Client",
"resource": 1,
"attempts": null
}
'''
# надо адаптировать класс к новому формату JSON
# class Order(object):
#     def __init__(self, id,order_synced, ticket, status, title, note, due_date, id_metaservice, is_global, is_visible, service, service_category, status_changed_date,time_created, time_placed, time_start=None, time_start_predicted=None, time_finish_predicted=None, time_start_real=None, time_finish_real=None, order_place_type=None, order_place_start=None, order_place_start_gps=None, order_place_start_real=None, order_place_start_real_gps=None, order_place_finish_predicted=None, order_place_finish_predicted_gps=None, order_place_finish_real=None, order_place_finish_real_gps=None, predicted_price=None, real_price=None, payment_transaction_id=None, rating_id=None, provider=None, provider_screen_name=None, receiver=None, receiver_screen_name=None, client=None, resource=None, attempts=None, asap=None):
#         self.order_synced = order_synced
#         self.id = id
#         self.ticket = ticket
#         self.status = status

#         self.title = title
#         self.note = note
#         self.due_date = due_date

#         self.id_metaservice = id_metaservice
#         self.is_global = is_global
#         self.is_visible = is_visible
#         self.service = service
#         self.service_category = service_category

#         self.status_changed_date = status_changed_date
#         self.time_created = time_created
#         self.time_placed = time_placed
#         self.time_start = time_start
#         self.time_start_predicted = time_start_predicted
#         self.time_finish_predicted = time_finish_predicted
#         self.time_start_real = time_start_real
#         self.time_finish_real = time_finish_real

#         self.order_place_type =order_place_type
#         self.order_place_start = order_place_start
#         self.order_place_start_gps = order_place_start_gps
#         self.order_place_start_real = order_place_start_real
#         self.order_place_start_real_gps = order_place_start_real_gps
#         self.order_place_finish_predicted = order_place_finish_predicted
#         self.order_place_finish_predicted_gps = order_place_finish_predicted_gps
#         self.order_place_finish_real = order_place_finish_real
#         self.order_place_finish_real_gps = order_place_finish_real_gps

#         self.predicted_price = predicted_price
#         self.real_price = real_price

#         self.payment_transaction_id = payment_transaction_id
#         self.rating_id = rating_id

#         self.provider = provider
#         self.provider_screen_name = provider_screen_name
#         self.receiver = receiver
#         self.receiver_screen_name = receiver_screen_name
#         self.client = client
#         self.resource = resource
#         self.attempts = attempts
#         self.asap = asap
#         #доделать до конца по аналогии с закоммиченным json
#     def __str__(self):
#         return "{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}, {14}, {15}, {16}, {17}, {18}, {19}, {20}, {21}, {22}, {23}, {24}, {25}, {26}, {27}, {28}, {29}, {30}, {31}, {32} , {33} ,{34}".format(self.order_synced, self.id, self.ticket, self.status, self.title, self.note, self.due_date, self.id_metaservice, self.is_global, self.is_visible, self.service, self.service_category, self.status_changed_date, self.time_created,self.time_placed, self.time_start, self.time_start_predicted, self.time_finish_predicted, self.time_start_real, self.time_finish_real, self.order_place_type, self.order_place_start, self.order_place_start_gps, self.order_place_start_real, self.order_place_start_real_gps, self.order_place_finish_predicted, self.order_place_finish_predicted_gps, self.order_place_finish_real, self.order_place_finish_real_gps, self.predicted_price, self.real_price, self.payment_transaction_id, self.rating_id, self.provider, self.provider_screen_name, self.receiver, self.receiver_screen_name, self.client, self.resource, self.attempts, self.asap)

# \n добавляете в местах с пустой строкой в шаблоне
