#ifndef SAVENOTICEMSGDB_H
#define SAVENOTICEMSGDB_H

#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlError>
#include <QObject>
#include <QMutex>
#include <Model/NoticeObject.h>
#include "preDefine.h"
#include "windows.h"

class SaveNoticeMsgDB : public QObject
{
    Q_OBJECT
public:
    // explicit SaveNoticeMsgDB(QObject *parent = 0);

    static SaveNoticeMsgDB& getInstance();

    /**
    *功能:初始化pos本地数据库;方便后期判断 打开pos本地数据库是否成功;
    *参数:[无]
    *返回:true:能够成功打开POS本地数据库，false:不能够成功打开POS本地数据库
    **/
    bool initSaveNoticeMsgDB();


    /**
    *功能:插入一条 门店通告消息 到pos本地数据库中;
    *参数:[1]通告对象指针, 建议使用临时拷贝对象, 担心栈对象销毁,导致奔溃;
    *返回:true操作成功，false失败
    **/
    bool insertNoticeMsg( NoticeObject*  noticeObj , int &insertIdIndex );


    /**
    *功能: 根据门店通告对象指针 更新 pos本地数据库中 门店通告消息表中数据;
    *参数:[1]门店通告消息
    *返回:true操作成功，false失败
    **/
    bool updateNoticeMsg( NoticeObject* noticeObj );

    /**
    *功能: 根据门店通告标题 更新 pos本地数据库中 门店通告消息表中ack_status;
    *参数:[1]门店通告消息 标题
    *返回:true操作成功，false失败
    **/
    bool updateNoticeAckStatus( QString title, const int insertIdIndex );

    /**
    *功能:查询 门店通告消息记录 是否存在本地的POS系统中;
    *参数:[1]门店通告消息指针
    *返回:true: 存在，false: 不存在
    **/
    bool isNoticeMsgExist(NoticeObject* noticeObj);

    /**
    *功能:查询 门店通告消息记录 将数据库数据读取到exe内存中;
    *参数:[1]门店通告消息指针
    *返回:true: 存在，false: 不存在
    **/
    bool queryAllNoticeMsgRecord( QList<NoticeObject*> &noticeObjList );

    /**
    *功能:查询是否存在 未确认门店通告消息记录;
    *参数:无
    *返回:true: 存在，false: 不存在
    **/
    bool existNoAckNotice();

    /**
    *功能:删除本地数据库中的 通告消息记录;
    *参数:[1] 删除日期;
    *返回:true 删除成功，false 删除失败;
    **/
    bool deleteNoticeMsgRecord(QString creatTime);

private:
    QMutex m_mutex;
    SaveNoticeMsgDB();
    SaveNoticeMsgDB(SaveNoticeMsgDB const&);
    SaveNoticeMsgDB& operator=(SaveNoticeMsgDB const&);
    QSqlDatabase m_sqlDb;

signals:

public slots:
};


#endif // SAVENOTICEMSGDB_H
