# Python imports
from datetime import datetime

# Django imports
from django.http import HttpResponse
from django.core.exceptions import ObjectDoesNotExist

# LeakLess Monitor imports
from Applications.Devices.models import Lldevicelist
from Applications.Measure.models import Lldeviceannotations


def annotations_get_icon_list():
    array = []
    array.append('thumb/chance_of_storm-26.png')
    array.append('thumb/settings2-26.png')
    array.append('thumb/spade-26.png')
    array.append('thumb/thumbs_down-26.png')
    array.append('thumb/thumbs_up-26.png')
    return array

def annotations_save(request):
    if request.user.is_authenticated():
        try:
            annotation_device_id    = request.GET.get('device_id')
            annotation_identifier   = request.GET.get('device_identifier')
            annotation_time         = request.GET.get('time')
            annotation_chart        = request.GET.get('chart')
            annotation_text         = request.GET.get('text')
            annotation_icon         = request.GET.get('icon')

            device_data = Lldevicelist.objects.get(id=annotation_device_id)

            if annotation_icon not in annotations_get_icon_list():
                return HttpResponse('Error: No icon found')

            annotation_data = Lldeviceannotations(timestamp=datetime.strptime(annotation_time, "%d/%m/%Y %H:%M:%S"),
                                                  identifier=annotation_identifier, channel=annotation_chart,
                                                  text=annotation_text, icon=annotation_icon, shorttext="1",
                                                  lldevicelist=device_data)
            annotation_data.save()

            return HttpResponse('Ok')
        except Exception as e:
            return HttpResponse('Error: '+e.message)
    else:
        return HttpResponse('Invalid user')


def annotations_edit(request):
    if request.user.is_authenticated():
        try:
            annotation_device_id   = request.GET.get('device_id')
            annotation_time        = request.GET.get('time')
            annotation_chart       = request.GET.get('chart')
            annotation_text        = request.GET.get('text')
            annotation_icon        = request.GET.get('icon')

            device_data = Lldevicelist.objects.get(id=annotation_device_id)

            if annotation_icon not in annotations_get_icon_list():
                return HttpResponse('Error: No icon found')

            Lldeviceannotations.objects.filter(timestamp=datetime.strptime(annotation_time, "%d/%m/%Y %H:%M:%S"),
                                               channel=annotation_chart,
                                               lldevicelist=device_data).update(text=annotation_text, icon=annotation_icon)

            return HttpResponse('Ok')
        except Exception as e:
            return HttpResponse('Error: '+e.message)
    else:
        return HttpResponse('Invalid user')


def annotations_delete(request):
    if request.user.is_authenticated():
        try:
            annotation_device_id    = request.GET.get('device_id')
            annotation_time         = request.GET.get('time')
            annotation_chart        = request.GET.get('chart')

            device_data = Lldevicelist.objects.get(id=annotation_device_id)

            try:
                annotation = Lldeviceannotations.objects.get(   timestamp=datetime.strptime(annotation_time, "%d/%m/%Y %H:%M:%S"),
                                                                channel=annotation_chart,
                                                                lldevicelist=device_data)
                annotation.delete()
            except ObjectDoesNotExist:
                return HttpResponse('Not found')

            return HttpResponse('Ok')
        except Exception as e:
            return HttpResponse('Error: '+e.message)
    else:
        return HttpResponse('Invalid user')