// Copyright (c) 2003 Juraj Kolesár (koli) #include "lt.h" /* data init {{{ */ /******************************************************************************/ int lt_c_company_data_init(T_COMPANY * company) { register int i; SET_CELL(company->pk, "", "pk_c_company", 0); SET_CELL(company->name, "", "name", 20); SET_CELL(company->idn, "", "idn", 10); SET_CELL(company->txn, "", "txn", 10); company->employees.table = NULL; company->address.table = NULL; company->phone.table = NULL; company->email.table = NULL; company->account.table = NULL; company->notes.table = NULL; for (i=0;i<__LT_C_COMPANY_PARAM_COUNT;i++) company->status[i] = false; return(__LT_OK); } /* }}} */ /* data get {{{ */ /******************************************************************************/ int lt_c_company_data_get(T_DB *tdb, T_COMPANY *company) { if (!(company->status[__LT_C_COMPANY_NAME])) { tdb_query_cell(tdb, company->name.value, g_strdup_printf( "SELECT name FROM c_company WHERE pk_c_company='%s'", company->pk.value)); company->status[__LT_C_COMPANY_NAME] = true; } if (!(company->status[__LT_C_COMPANY_IDN])) { tdb_query_cell(tdb, company->idn.value, g_strdup_printf( "SELECT idn FROM c_company WHERE pk_c_company='%s'", company->pk.value)); company->status[__LT_C_COMPANY_IDN] = true; } if (!(company->status[__LT_C_COMPANY_TXN])) { tdb_query_cell(tdb, company->txn.value, g_strdup_printf( "SELECT txn FROM c_company WHERE pk_c_company='%s'", company->pk.value)); company->status[__LT_C_COMPANY_TXN] = true; } if (!(company->status[__LT_C_COMPANY_EMPLOYEES])) { tdb_table_fill(tdb, &(company->employees), g_strdup_printf( "SELECT pk_c_person, name, surname, note " "FROM c_person " "INNER JOIN lists_c " "ON fk_table=pk_c_person " "WHERE fk_contact='%s' " "AND c_contact='COMPANY' " "AND c_table='PERSON'", company->pk.value)); company->status[__LT_C_COMPANY_EMPLOYEES] = true; } if (!(company->status[__LT_C_COMPANY_PHONE])) { tdb_table_fill(tdb, &(company->phone), g_strdup_printf( "SELECT pk_c_phone, number, note " "FROM c_phone " "INNER JOIN lists_c " "ON fk_contact=pk_c_phone " "WHERE fk_table='%s' " "AND c_table='COMPANY' " "AND c_contact='PHONE'", company->pk.value)); company->status[__LT_C_COMPANY_PHONE] = true; } if (!(company->status[__LT_C_COMPANY_EMAIL])) { tdb_table_fill(tdb, &(company->email), g_strdup_printf( "SELECT pk_c_email, url, note " "FROM c_email " "INNER JOIN lists_c " "ON fk_contact=pk_c_email " "WHERE fk_table='%s' " "AND c_table='COMPANY' " "AND c_contact='EMAIL'", company->pk.value)); company->status[__LT_C_COMPANY_EMAIL] = true; } if (!(company->status[__LT_C_COMPANY_ADDRESS])) { tdb_table_fill(tdb, &(company->address), g_strdup_printf( "SELECT pk_c_email, url, note " "FROM c_address " "INNER JOIN lists_c " "ON fk_contact=pk_c_address " "WHERE fk_table='%s' " "AND c_table='COMPANY' " "AND c_contact='ADDRESS'", company->pk.value)); company->status[__LT_C_COMPANY_EMAIL] = true; } return(__LT_OK); } /* }}} */ /* data set {{{ */ /******************************************************************************/ int lt_c_company_data_set(T_DB *tdb, T_COMPANY * company) { if (!(company->status[__LT_C_COMPANY_PK])) { tdb_query(tdb, g_strdup_printf( "INSERT INTO c_company (name, idn, txn) " "VALUES ('%s', '%s', '%s')", company->name.value, company->idn.value, company->txn.value)); tdb_query_lastid(tdb, company->pk.value); company->status[__LT_C_COMPANY_PK] = true; company->status[__LT_C_COMPANY_NAME] = true; company->status[__LT_C_COMPANY_IDN] = true; company->status[__LT_C_COMPANY_TXN] = true; } if (!(company->status[__LT_C_COMPANY_NAME])) { tdb_query(tdb, g_strdup_printf( "UPDATE c_company SET name='%s' WHERE pk_c_company='%s'", company->name.value, company->pk.value)); company->status[__LT_C_COMPANY_NAME] = true; } if (!(company->status[__LT_C_COMPANY_IDN])) { tdb_query(tdb, g_strdup_printf( "UPDATE c_company SET idn='%s' WHERE pk_c_company='%s'", company->idn.value, company->pk.value)); company->status[__LT_C_COMPANY_IDN] = true; } if (!(company->status[__LT_C_COMPANY_TXN])) { tdb_query(tdb, g_strdup_printf( "UPDATE c_company SET txn='%s' WHERE pk_c_company='%s'", company->txn.value, company->pk.value)); company->status[__LT_C_COMPANY_TXN] = true; } return(__LT_OK); } /* }}} */ /* data remove {{{ */ /******************************************************************************/ int lt_c_company_data_remove(T_DB *tdb, T_COMPANY * company) { tdb_query(tdb, g_strdup_printf( "DELETE FROM c_company WHERE pk_c_company='%s'", company->pk.value) ); return(__LT_OK); } /* }}} */ /* data clear {{{ */ /******************************************************************************/ int lt_c_company_data_clear(T_COMPANY * company) { register int i; company->pk.value[0] = '\0'; company->name.value[0] = '\0'; company->idn.value[0] = '\0'; company->txn.value[0] = '\0'; if (company->employees.table != NULL) tdb_table_free(&(company->employees)); if (company->address.table != NULL) tdb_table_free(&(company->address)); if (company->phone.table != NULL) tdb_table_free(&(company->phone)); if (company->email.table != NULL) tdb_table_free(&(company->email)); if (company->account.table != NULL) tdb_table_free(&(company->account)); if (company->notes.table != NULL) tdb_table_free(&(company->notes)); for (i=0;i<__LT_C_COMPANY_PARAM_COUNT;i++) company->status[i] = false; return(__LT_OK); } /* }}} */ /* tables clear {{{ */ /******************************************************************************/ int lt_c_company_tables_clear(T_COMPANY * company) { register int i; if (company->employees.table != NULL) tdb_table_free(&(company->employees)); if (company->address.table != NULL) tdb_table_free(&(company->address)); if (company->phone.table != NULL) tdb_table_free(&(company->phone)); if (company->email.table != NULL) tdb_table_free(&(company->email)); if (company->account.table != NULL) tdb_table_free(&(company->account)); if (company->notes.table != NULL) tdb_table_free(&(company->notes)); for (i=__LT_C_COMPANY_EMPLOYEES; i <__LT_C_COMPANY_PARAM_COUNT; i++) company->status[i] = false; return(__LT_OK); } /* }}} */ /* qs init {{{ */ /******************************************************************************/ int lt_c_company_qs_init(T_COMPANY *company, T_COLS **cols, T_QS *qs) { *cols = g_slist_append(*cols, &(company->pk)); *cols = g_slist_append(*cols, &(company->name)); *cols = g_slist_append(*cols, &(company->idn)); *cols = g_slist_append(*cols, &(company->txn)); tdb_qs_set_columns(qs, *cols); strcpy(qs->from, "c_company"); return(__LT_OK); } /* }}} */ /* qs employees init {{{ */ /******************************************************************************/ int lt_c_company_employees_qs_init(T_QS *qs, T_COMPANY * company) { strcpy(qs->columns, "pk_c_person, name, surname, nickname"); strcpy(qs->from, "c_person INNER JOIN lists_c ON fk_table=pk_c_person"); strcpy(qs->filter_static, g_strdup_printf( "c_table='PERSON' AND c_contact='COMPANY' AND fk_contact='%s'", company->pk.value)); strcpy(qs->filter_dynamic, ""); strcpy(qs->order, ""); return(__LT_OK); } /* }}} */ /* employ {{{ */ /***************************************************************************/ int lt_c_company_employ(T_DB *tdb, T_COMPANY *company, T_PERSON *person) { tdb_query(tdb, g_strdup_printf( "INSERT INTO lists_c " "(fk_table, fk_contact, c_table, c_contact, priority, note) " "VALUES ('%s','%s','PERSON','COMPANY','P','zamestnanec')", person->pk.value, company->pk.value) ); return(__LT_OK); } /* }}} */