def createadmin(AdminId, AdminUserName, AdminPhoneNumber, AdminEmailId,
                AdminPassword):
    createFolder('./AdminDetails')

    try:
        if os.path.exists('./AdminDetails/admin_details.csv'):
            print('Details directory already exists')
        else:
            print("Details directory doesn't Exist")
            with open('./AdminDetails/admin_details.csv', 'w') as file:
                writer = csv.writer(file)
                writer.writerow([
                    "AdminIds", "AdminUserNames", "AdminPhoneNumbers",
                    "AdminEmailIds", "AdminPasswords"
                ])
            print("Creating new directory for employee_details.csv.")
    except OSError:
        print("File Already Exists")

    AdminId = int(AdminId)
    AdminUserName = AdminUserName
    AdminPhoneNumber = AdminPhoneNumber
    AdminEmailId = AdminEmailId
    AdminPassword = AdminPassword

    df = pd.read_csv('./AdminDetails/admin_details.csv')

    if int(AdminId) in df['AdminIds'].values:
        print("\nAdmin already exists!!!")
        print("\nExiting.")
    else:
        print("\nCreating New Admin.")
        data = [{
            'AdminIds': AdminId,
            'AdminUserNames': AdminUserName,
            'AdminPhoneNumbers': AdminPhoneNumber,
            'AdminEmailIds': AdminEmailId,
            'AdminPasswords': AdminPassword
        }]
        df = pd.read_csv('./AdminDetails/admin_details.csv')
        df = df.append(data, ignore_index=True, sort=False)
        df.to_csv('./AdminDetails/admin_details.csv', index=False)
    upload_to_database()
def leave_recognition():
    #DateTime,TimeStamp,WeekDay Variable
    now = datetime.now()
    year_dir = str(now.year)
    month_dir = str(now.month)
    if len(month_dir) == 2:
        pass
    else:
        month_dir = '0' + str(now.month)

    day_dir = str(now.day)
    if len(day_dir) == 2:
        pass
    else:
        day_dir = '0' + str(now.day)
    weekDays = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday",
                "Saturday", "Sunday")
    weekday = str(weekDays[now.weekday()])
    filename = '_' + weekday
    date_string = year_dir + '-' + month_dir + '-' + day_dir
    filename = date_string + '_' + weekday

    #main attendance path and csv file
    today_path = './Attendance/main_attendance/' + year_dir + '/' + month_dir
    main_attendance_csv_path = today_path + '/' + filename + '.csv'
    print(main_attendance_csv_path)
    df = pd.read_csv(main_attendance_csv_path)

    #Loading Recognizer
    recognizer = cv2.face.LBPHFaceRecognizer_create()
    recognizer.read('Model/model.yml')
    cascadePath = "haarcascade_frontalface_default.xml"
    faceCascade = cv2.CascadeClassifier(cascadePath)

    #getting Id,Name from Image
    Ids, UserNames, keyValues = keyValuePairs('EmployeeDetails/dataSet')

    cam = cv2.VideoCapture(0)
    font = cv2.FONT_HERSHEY_SIMPLEX
    while True:
        ret, im = cam.read()
        gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
        faces = faceCascade.detectMultiScale(gray, 1.3, 5)
        for (x, y, w, h) in faces:
            cv2.rectangle(im, (x, y), (x + w, y + h), (0, 255, 0), 2)
            Id, conf = recognizer.predict(gray[y:y + h, x:x + w])
            if (conf > 40 and conf < 100):
                if Id in keyValues.keys():
                    Id1 = 'User Id  : ' + str(Id)
                    Name = keyValues[Id]
                    Name_ = Name
                    Name1 = 'User Name: ' + Name
                    conf_ = str(conf)

                    leave_datetime = datetime.now()
                    leave_timestamp = datetime.timestamp(leave_datetime)

                    #script for noting main_attendance Leave
                    a = df.loc[df['Ids'] ==
                               Id]['Leave_DateTime'] == 'Not-Marked'
                    if a.all():
                        #issuing attendance in main_attendance
                        print("Marking Leave for ")
                        df.loc[df['Ids'] == Id,
                               ['Leave_DateTime', 'Leave_TimeStamp']] = [
                                   leave_datetime, leave_timestamp
                               ]
                        df.to_csv(main_attendance_csv_path, index=False)
                        upload_to_database()
                    else:
                        print("Leave already noted!")

                    student_path = './Attendance/employee_attendance/' + str(
                        Id) + '_' + Name + '.csv'
                    df1 = pd.read_csv(student_path)
                    b = df1.loc[df1['Date'] ==
                                date_string]['Leave_DateTime'] == 'Not-Marked'

                    if b.all():
                        #issuing attendance in main_attendance
                        print("Marking Leave for ")
                        df1.loc[df1['Date'] == date_string,
                                ['Leave_DateTime', 'Leave_TimeStamp']] = [
                                    leave_datetime, leave_timestamp
                                ]
                        df1.to_csv(student_path, index=False)
                        upload_to_database()

                    #red bounding box,font for Unknown User
                    cv2.putText(im, Id1, (x, y + h + 20), font, 0.7,
                                (0, 255, 0), 2)
                    cv2.putText(im, Name, (x, y + h + 38), font, 0.7,
                                (0, 255, 0), 2)
                    cv2.putText(im, conf_, (x, y + h + 58), font, 0.7,
                                (0, 255, 0), 2)

                else:
                    Id1 = "Null"
                    Name = "Unknown"
                    conf_ = str(conf)

                    #red bounding box,font for Unknown User
                    cv2.rectangle(im, (x, y), (x + w, y + h), (0, 0, 255), 2)
                    cv2.putText(im, Id1, (x, y + h + 20), font, 0.7,
                                (0, 0, 255), 2)
                    cv2.putText(im, Name, (x, y + h + 38), font, 0.7,
                                (0, 0, 255), 2)
                    cv2.putText(im, conf_, (x, y + h + 58), font, 0.7,
                                (0, 0, 255), 2)
            else:
                Id1 = "User Id: Unknown"
                Name = "User Name: Unknown"
                conf_ = 'NuLL'

                #red bounding box,font for Unknown User
                cv2.rectangle(im, (x, y), (x + w, y + h), (0, 0, 255), 2)
                cv2.putText(im, Id1, (x, y + h + 20), font, 0.7, (0, 0, 255),
                            2)
                cv2.putText(im, Name, (x, y + h + 38), font, 0.7, (0, 0, 255),
                            2)
                cv2.putText(im, conf_, (x, y + h + 58), font, 0.7, (0, 0, 255),
                            2)
            print(Name)

        cv2.imshow('im', im)
        if cv2.waitKey(1) == 27:
            break
    cam.release()
    cv2.destroyAllWindows()
                attend_datetime=datetime.now()
                attend_timestamp=datetime.timestamp(attend_datetime)
                
                
                df=pd.read_csv(main_attendance_csv_path)

                a=df.loc[df['Ids']==Id]['Attendance']=='Absent'
                if a.all():

                    #issuing attendance in main_attendance
                    print("Marking Present for ")
                    df.loc[df['Ids']==Id,['Attendance','Attend_DateTime','Attend_TimeStamp','Leave_DateTime','Leave_TimeStamp']]=['Present',attend_datetime,attend_timestamp,'Not-Marked','Not-Marked']
                    df.to_csv(main_attendance_csv_path,index=False)
                    
                    upload_to_database()
                else:
                    print("Attendance already noted!")

                student_path='./Attendance/employee_attendance/'+str(Id)+'_'+Name+'.csv'
                df1=pd.read_csv(student_path)

                data_row=[{'Name':Name,'Date':date_string,'Day':weekday,'Attendance':'Present'
                    ,'Attend_DateTime':attend_datetime,'Attend_TimeStamp':attend_timestamp,'Leave_DateTime':'Not-Marked','Leave_TimeStamp':'Not-Marked'}]
            
                date_list=[]    #checking for list of dates in particular students csv file for marking new attendance
                for i in df1.iloc[:,1]:
                    date_list.append(i)
                if date_string in date_list:
                    print(Name)
                else:
def directory():
    #creating hierarchy of directories as Attendance/Year/Month/Day
    print("--Creating Main Attendance Directory.--")

    createFolder('./Attendance/main_attendance')

    #DateTime,TimeStamp,WeekDay Variable
    now = datetime.now()
    year_dir = str(now.year)
    month_dir = str(now.month)
    if len(month_dir) == 2:
        pass
    else:
        month_dir = '0' + str(now.month)

    day_dir = str(now.day)
    if len(day_dir) == 2:
        pass
    else:
        day_dir = '0' + str(now.day)

    weekDays = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday",
                "Saturday", "Sunday")
    weekday = str(weekDays[now.weekday()])

    today_path = './Attendance/main_attendance/' + year_dir + '/' + month_dir
    createFolder(today_path)
    date_string = year_dir + '-' + month_dir + '-' + day_dir
    filename = date_string + '_' + weekday

    #student details csv
    student_csv_path = './EmployeeDetails/employee_details.csv'

    #adding more columns to students csv and saving the sheet for main_attendance
    main_attendance_csv_path = today_path + '/' + filename + '.csv'
    df = pd.read_csv(student_csv_path)
    df["Attendance"] = 'Absent'
    df["Attend_DateTime"] = int(0)
    df["Attend_TimeStamp"] = float(0.0)
    df["Leave_DateTime"] = int(0)
    df["Leave_TimeStamp"] = float(0.0)
    df.to_csv(main_attendance_csv_path, index=False)
    print('--csv file created for main attendance--')

    #creating csv and directory for
    if os.path.exists('./Attendance/employee_attendance'):

        for i in range(0, len(df)):
            student_csv_path = './Attendance/employee_attendance/' + str(
                df.iloc[i][0]) + '_' + df.iloc[i][1] + '.csv'

            if os.path.exists(student_csv_path):
                pass
            else:
                data = [
                    'Name', 'Date', 'Day', 'Attendance', 'Attend_DateTime',
                    'Attend_TimeStamp', 'Leave_DateTime', 'Leave_TimeStamp'
                ]
                df1 = pd.DataFrame(columns=data)
                df1.to_csv(student_csv_path, index=False)
                print('--csv file created for: ' + df.iloc[i][1] + '--')

    else:
        createFolder('./Attendance/employee_attendance')
        print("--Created Student Attendance Directory--")
        data = [
            'Name', 'Date', 'Day', 'Attendance', 'Attend_DateTime',
            'Attend_TimeStamp', 'Leave_DateTime', 'Leave_TimeStamp'
        ]
        for i in range(0, len(df)):
            student_csv_path = './Attendance/employee_attendance/' + df.iloc[
                i][0] + '_' + df.iloc[i][1] + '.csv'
            df1 = pd.DataFrame(columns=data)
            df1.to_csv(student_csv_path, index=False)
            print('--csv file created for: ' + df.iloc[i][1] + '--')
        print('\n-----DONE-----')
    upload_to_database()