# -*- coding: utf-8 -*-

from __future__ import division

from django_logit import logit
from django_response import response
from paginator import pagination

from maintenance.models import MaintenacePointInfo
from utils.error.errno_utils import MaintenancePointStatusCode


@logit
def maintenance_point_add(request):
    name = request.POST.get('name', '')
    province = request.POST.get('province', '')
    location = request.POST.get('location', '')
    postcode = request.POST.get('postcode', '')

    point = MaintenacePointInfo.objects.create(name=name, province=province, location=location, postcode=postcode)

    return response(data={
        'point_id': point.id,
    })


@logit
def maintenance_point_delete(request):
    point_id = request.POST.get('point_id', '')

    MaintenacePointInfo.objects.filter(id=point_id).update(status=False)

    return response()


@logit
def maintenance_point_update(request):
    point_id = request.POST.get('point_id', '')
    name = request.POST.get('name', '')
    province = request.POST.get('province', '')
    location = request.POST.get('location', '')
    postcode = request.POST.get('postcode', '')

    try:
        point = MaintenacePointInfo.objects.get(pk=point_id)
    except MaintenacePointInfo.DoesNotExist:
        return response(MaintenancePointStatusCode.MAINTENACE_POINT_NOT_FOUND)

    if name:
        point.name = name
    if province:
        point.province = province
    if location:
        point.location = location
    if postcode:
        point.postcode = postcode
    point.save()

    return response()


@logit
def maintenance_point_list(request):
    page = request.POST.get('page', 1)
    num = request.POST.get('num', 20)

    points = MaintenacePointInfo.objects.filter(status=True)
    points = [point.data for point in points]
    points, left = pagination(points, page, num)

    return response(data={
        'points': points,
        'left': left,
    })