int compare_dates(char *str1, char *str2){ //returns which transaction occures first. if (str1 == NULL || str2 == NULL){ return -1; } int d1, d2, m1, m2, y1, y2,res=0; to_date(str1, &d1, &m1, &y1); //conversion of srting form to numeric form to_date(str2, &d2, &m2, &y2); if (y1 < y2){ //checking res=1; } else if (y1>y2){ res= 2; } else{ if (m1 < m2){ res = 1; } else if (m1>m2){ res = 2; } else{ if (d1 <= d2){ res = 1; } else{ res = 2; } } } return res; }
void Model_Checking::getEmptyTransaction(Data &data, int accountID) { data.TRANSID = -1; wxDateTime trx_date = wxDateTime::Today(); if (mmIniOptions::instance().transDateDefault_ != 0) { auto trans = instance().find(ACCOUNTID(accountID), TRANSDATE(trx_date, LESS_OR_EQUAL)); std::stable_sort(trans.begin(), trans.end(), SorterByTRANSDATE()); std::reverse(trans.begin(), trans.end()); if (!trans.empty()) trx_date = to_date(trans.begin()->TRANSDATE); wxDateTime trx_date_b = wxDateTime::Today(); auto trans_b = instance().find(TOACCOUNTID(accountID), TRANSDATE(trx_date_b, LESS_OR_EQUAL)); std::stable_sort(trans_b.begin(), trans_b.end(), SorterByTRANSDATE()); std::reverse(trans_b.begin(), trans_b.end()); if (!trans_b.empty()) { trx_date_b = to_date(trans_b.begin()->TRANSDATE); if (!trans.empty() && (trx_date_b > trx_date)) trx_date = trx_date_b; } } data.TRANSDATE = trx_date.FormatISODate(); data.ACCOUNTID = accountID; data.STATUS = toShortStatus(all_status()[mmIniOptions::instance().transStatusReconciled_]); data.TRANSCODE = all_type()[WITHDRAWAL]; data.CATEGID = -1; data.SUBCATEGID = -1; data.FOLLOWUPID = -1; data.TRANSAMOUNT = 0; data.TOTRANSAMOUNT = 0; data.TRANSACTIONNUMBER = ""; if (mmIniOptions::instance().transPayeeSelectionNone_ != 0) { auto trx = instance().find(TRANSCODE(TRANSFER, NOT_EQUAL) , ACCOUNTID(accountID, EQUAL), TRANSDATE(trx_date, LESS_OR_EQUAL)); if (!trx.empty()) { std::stable_sort(trx.begin(), trx.end(), SorterByTRANSDATE()); Model_Payee::Data* payee = Model_Payee::instance().get(trx.rbegin()->PAYEEID); if (payee) data.PAYEEID = payee->PAYEEID; if (payee && mmIniOptions::instance().transCategorySelectionNone_ != 0) { data.CATEGID = payee->CATEGID; data.SUBCATEGID = payee->SUBCATEGID; } } } }
query& query::set_date(const char* name, time_t value, const char* fmt /* = "%Y-%m-%d %H:%M:%S" */) { string key(name); key.lower(); del_param(key); string buf(128); if (to_date(value, buf, fmt) == NULL) { logger_error("to_date_time failed, time: %ld", (long) value); return *this; } size_t len = buf.length(); query_param* param = (query_param*) acl_mymalloc(sizeof(query_param) + len + 1); param->type = DB_PARAM_STR; memcpy(param->v.S, buf.c_str(), len); param->v.S[len] = 0; param->dlen = (int) len; params_[key] = param; return *this; }
void get_shadow_properties(MYLDAP_ENTRY *entry, long *lastchangedate, long *mindays, long *maxdays, long *warndays, long *inactdays, long *expiredate, unsigned long *flag) { char buffer[64]; const char *tmpvalue; char *tmp; /* get lastchange date */ tmpvalue = attmap_get_value(entry, attmap_shadow_shadowLastChange, buffer, sizeof(buffer)); if (tmpvalue == NULL) tmpvalue = ""; *lastchangedate = to_date(myldap_get_dn(entry), tmpvalue, attmap_shadow_shadowLastChange); /* get other shadow properties */ GET_OPTIONAL_LONG(*mindays, shadowMin, -1); GET_OPTIONAL_LONG(*maxdays, shadowMax, -1); GET_OPTIONAL_LONG(*warndays, shadowWarning, -1); GET_OPTIONAL_LONG(*inactdays, shadowInactive, -1); GET_OPTIONAL_LONG(*expiredate, shadowExpire, -1); GET_OPTIONAL_LONG(*flag, shadowFlag, 0); /* if we're using AD handle the flag specially */ if (strcasecmp(attmap_shadow_shadowLastChange, "pwdLastSet") == 0) { if (*flag & UF_DONT_EXPIRE_PASSWD) *maxdays = -1; *flag = 0; } }