class ActionButton_Dataservice():
    def __init__(self):
        logging.info("start the ActionButton_Dataservice")
        self.resource_request_dao = ResourceRequest_DAO()
        self.repair_resource_dao = RepairResource_DAO()
        self.resource_dao = Resource_DAO()

    def request_function(self, resId, expDate, incid):
        assert isinstance(resId, int)
        assert isinstance(expDate, str)
        assert isinstance(incid, int)
        new_id = int(self.resource_request_dao.get_count()) + 1000
        self.resource_request_dao.insert_record(incid, new_id, expDate, resId)

    def repair_function(self, resId, username, duration):
        assert isinstance(resId, int)
        assert isinstance(username, str)
        assert isinstance(duration, int)
        repId = int(self.repair_resource_dao.get_count()) + 1

        currentStatus = self.resource_dao.get_resource_status_by_resourceId(
            resId)

        if currentStatus == "available":
            start = datetime.now()
            end = start + timedelta(days=duration)
            sd = datetime.strftime(start, "%Y-%m-%d")
            ed = datetime.strftime(end, "%Y-%m-%d")

            self.resource_dao.update_status_resource_id(resId, "in repair")
            self.repair_resource_dao.insert_records(resId, repId, username, sd,
                                                    ed)

        if currentStatus == "not available":
            start = self.resource_dao.get_duedate_by_resourceId(resId)
            sd = datetime.strptime(start, "%Y-%m-%d")
            end = sd + timedelta(days=duration)
            sd = datetime.strftime(sd, "%Y-%m-%d")
            ed = datetime.strftime(end, "%Y-%m-%d")
            self.repair_resource_dao.insert_records(resId, repId, username, sd,
                                                    ed)

    def deploy_function(self, incid, resid, username):
        assert isinstance(incid, int)
        assert isinstance(resid, int)
        assert isinstance(username, str)
        duedate = self.resource_request_dao.get_expectedreturndate_by_resIdAndInciId(
            resid, incid)
        start = datetime.now()
        sd = datetime.strftime(start, "%Y-%m-%d")
        logging.info(sd)
        end = start + timedelta(days=22)
        ed = datetime.strftime(end, "%Y-%m-%d")
        self.resource_dao.update_all_resource_id("not available", sd, ed,
                                                 username, resid)
        self.resource_request_dao.delete_by_resIdAndInciId(resid, incid)
    def get_all_resid(self):
        rsd = Resource_DAO()
        result = rsd.get_all_resource_id()

        rsd.update_status_resource_id(3, "in repair")
        print result