void doTracks(char *proteinID, char *mrnaID, char *aa, int *yOffp, char *psOutput) /* draw various protein tracks */ { int l; char aaOrigOffsetStr[20]; int hasResFreq; char uniProtDbName[50]; char *protDbDate; char *chrom; char strand; char *kgId, *kgPep, *protPep; char cond_str[255]; char *answer; //int i, ll; //char *chp1, *chp2; g_font = mgSmallFont(); safef(pbScaleStr, sizeof(pbScaleStr), "%d", pbScale); if (psOutput != NULL) { pbScale = atoi(cartOptionalString(cart, "pbt.pbScaleStr")); } if (cgiOptionalString("trackOffset") != NULL) { trackOrigOffset = atoi(cgiOptionalString("trackOffset")); } if (cgiOptionalString("pbScaleStr") != NULL) { pbScale = atoi(cgiOptionalString("pbScaleStr")); } if (cgiOptionalString("pbScale") != NULL) { scaleButtonPushed = TRUE; if (strcmp(cgiOptionalString("pbScale"), "1/6") == 0) pbScale = 1; if (strcmp(cgiOptionalString("pbScale"), "1/2") == 0) pbScale = 3; if (strcmp(cgiOptionalString("pbScale"), "FULL") == 0) pbScale = 6; if (strcmp(cgiOptionalString("pbScale"), "DNA") == 0) pbScale =22; safef(pbScaleStr, sizeof(pbScaleStr), "%d", pbScale); cgiMakeHiddenVar("pbScaleStr", pbScaleStr); } else { scaleButtonPushed = FALSE; } if (psOutput == NULL) { if (cgiVarExists("pbt.left3")) { relativeScroll(-0.95); initialWindow = FALSE; } else if (cgiVarExists("pbt.left2")) { relativeScroll(-0.475); initialWindow = FALSE; } else if (cgiVarExists("pbt.left1")) { relativeScroll(-0.02); initialWindow = FALSE; } else if (cgiVarExists("pbt.right1")) { relativeScroll(0.02); initialWindow = FALSE; } else if (cgiVarExists("pbt.right2")) { relativeScroll(0.475); initialWindow = FALSE; } else if (cgiVarExists("pbt.right3")) { relativeScroll(0.95); initialWindow = FALSE; } } dnaUtilOpen(); l=strlen(aa); /* initialize AA properties */ aaPropertyInit(&hasResFreq); sfCount = getSuperfamilies2(proteinID); if (sfCount == 0) { sfCount = getSuperfamilies(proteinID); } if (mrnaID != NULL) { if (kgVersion == KG_III) { doExonTrack = FALSE; sqlSafefFrag(cond_str, sizeof(cond_str), "spId='%s'", proteinID); kgId = sqlGetField(database, "kgXref", "kgId", cond_str); if (kgId != NULL) { sqlSafefFrag(cond_str, sizeof(cond_str), "name='%s'", kgId); kgPep = sqlGetField(database, "knownGenePep", "seq", cond_str); //printf("<pre><br>%s", kgPep);fflush(stdout); if (kgPep != NULL) { if (strstr(protDbName, "proteins") != NULL) { protDbDate = strstr(protDbName, "proteins") + strlen("proteins"); safef(uniProtDbName, sizeof(uniProtDbName),"sp%s", protDbDate); sqlSafefFrag(cond_str, sizeof(cond_str), "acc='%s'", proteinID); protPep = sqlGetField(uniProtDbName, "protein", "val", cond_str); //printf("<br>%s\n", protPep);fflush(stdout); if (protPep != NULL) { if (sameWord(kgPep, protPep)) { //printf("<br>MATCH!\n");fflush(stdout); sqlSafefFrag(cond_str, sizeof(cond_str), "qName='%s'", kgId); answer = sqlGetField(database, kgProtMapTableName, "qName", cond_str); if (answer != NULL) { /* NOTE: passing in kgId instead of proteinID because kgProtMap2's qName uses kgId instead of protein display ID */ getExonInfo(kgId, &exCount, &chrom, &strand); assert(exCount > 0); doExonTrack = TRUE; } } /* else { chp1 = kgPep; printf("<br>"); chp2 = protPep; ll = strlen(kgPep); if (strlen(protPep) < ll) ll= strlen(protPep); for (i=0; i<ll; i++) { if (*chp1 != *chp2) { printf("%c", *chp1); } else { printf("."); } chp1++; chp2++; } } //printf("</pre>");fflush(stdout); */ } } } } } else { doExonTrack = TRUE; getExonInfo(proteinID, &exCount, &chrom, &strand); assert(exCount > 0); } /* do the following only if pbTracks called doTracks() */ if (initialWindow && IAmPbTracks) { prevGBOffsetSav = calPrevGB(exCount, chrom, strand, l, yOffp, proteinID, mrnaID); trackOrigOffset = prevGBOffsetSav; if (trackOrigOffset > (protSeqLen*pbScale - 600)) trackOrigOffset = protSeqLen*pbScale - 600; /* prevent negative value */ if (trackOrigOffset < 0) trackOrigOffset = 0; } /* if this if for PDF/Postscript, the trackOrigOffset is already calculated previously, use the saved value */ if (psOutput != NULL) { trackOrigOffset = atoi(cartOptionalString(cart, "pbt.trackOffset")); } } /*printf("<br>%d %d<br>%d %d\n", prevGBStartPos, prevGBEndPos, blockGenomeStartPositive[exCount-1], blockGenomeStartPositive[0]); fflush(stdout); */ if (strand == '-') { if ((prevGBStartPos <= blockGenomeStartPositive[exCount-1]) && (prevGBEndPos >= blockGenomeStartPositive[0])) { showPrevGBPos = FALSE; } } else { if ((prevGBStartPos <= blockGenomeStartPositive[0]) && (prevGBEndPos >= blockGenomeStartPositive[exCount-1])) { showPrevGBPos = FALSE; } } if ((cgiOptionalString("aaOrigOffset") != NULL) && scaleButtonPushed) { trackOrigOffset = atoi(cgiOptionalString("aaOrigOffset"))*pbScale; } pixWidth = 160+ protSeqLen*pbScale; if (pixWidth > MAX_PB_PIXWIDTH) { pixWidth = MAX_PB_PIXWIDTH; } if ((protSeqLen*pbScale - trackOrigOffset) < MAX_PB_PIXWIDTH) { pixWidth = protSeqLen*pbScale - trackOrigOffset + 160; } if (pixWidth < 550) pixWidth = 550; insideWidth = pixWidth-gfxBorder; if (proteinInSupportedGenome) { pixHeight = 250; } else { pixHeight = 215; } if (sfCount > 0) pixHeight = pixHeight + 20; /* make room for individual residues display */ if (pbScale >=6) pixHeight = pixHeight + 20; if (pbScale >=18) pixHeight = pixHeight + 30; if (psOutput) { vg = vgOpenPostScript(pixWidth, pixHeight, psOutput); suppressHtml = TRUE; hideControls = TRUE; } else { trashDirFile(&gifTn, "pbt", "pbt", ".png"); vg = vgOpenPng(pixWidth, pixHeight, gifTn.forCgi, FALSE); } /* Put up horizontal scroll controls. */ hWrites("Move "); hButton("pbt.left3", "<<<"); hButton("pbt.left2", " <<"); hButton("pbt.left1", " < "); hButton("pbt.right1", " > "); hButton("pbt.right2", ">> "); hButton("pbt.right3", ">>>"); hPrintf("     "); /* Put up scaling controls. */ hPrintf("Current scale: "); if (pbScale == 1) hPrintf("1/6 "); if (pbScale == 3) hPrintf("1/2 "); if (pbScale == 6) hPrintf("FULL "); if (pbScale == 22) hPrintf("DNA "); hPrintf("    Rescale to "); hPrintf("<INPUT TYPE=SUBMIT NAME=\"pbScale\" VALUE=\"1/6\">\n"); hPrintf("<INPUT TYPE=SUBMIT NAME=\"pbScale\" VALUE=\"1/2\">\n"); hPrintf("<INPUT TYPE=SUBMIT NAME=\"pbScale\" VALUE=\"FULL\">\n"); if (kgVersion == KG_III) { /* for KG III, the protein has to exist in the kgProtMap2 table (which will turn on doExonTrack flag) to provide the genomic position data needed for DNA sequence display */ if ((proteinInSupportedGenome) && (doExonTrack)) hPrintf("<INPUT TYPE=SUBMIT NAME=\"pbScale\" VALUE=\"DNA\">\n"); } else { if (proteinInSupportedGenome) hPrintf("<INPUT TYPE=SUBMIT NAME=\"pbScale\" VALUE=\"DNA\">\n"); } hPrintf("<FONT SIZE=1><BR><BR></FONT>\n"); g_vg = vg; pbRed = vgFindColorIx(g_vg, 0xf9, 0x51, 0x59); pbBlue = vgFindColorIx(g_vg, 0x00, 0x00, 0xd0); bkgColor = vgFindColorIx(vg, 255, 254, 232); vgBox(vg, 0, 0, insideWidth, pixHeight, bkgColor); /* Start up client side map. */ hPrintf("<MAP Name=%s>\n", mapName); vgSetClip(vg, 0, gfxBorder, insideWidth, pixHeight - 2*gfxBorder); /* start drawing indivisual tracks */ doAAScale(l, yOffp, 1); if (pbScale >= 6) doResidues(aa, l, yOffp); if (pbScale >= 18) doDnaTrack(chrom, strand, exCount, l, yOffp); if ((mrnaID != NULL) && showPrevGBPos) { doPrevGB(exCount, chrom, strand, l, yOffp, proteinID, mrnaID); } if (mrnaID != NULL) { if (doExonTrack) doExon(exCount, chrom, l, yOffp, proteinID, mrnaID); } doCharge(aa, l, yOffp); doHydrophobicity(aa, l, yOffp); doCysteines(aa, l, yOffp); if (sfCount > 0) doSuperfamily(ensPepName, sfCount, yOffp); if (hasResFreq) doAnomalies(aa, l, yOffp); doAAScale(l, yOffp, -1); vgClose(&vg); /* Finish map and save out picture and tell html file about it. */ hPrintf("</MAP>\n"); /* put tracks image here */ hPrintf( "\n<IMG SRC=\"%s\" BORDER=1 WIDTH=%d HEIGHT=%d USEMAP=#%s><BR>", gifTn.forCgi, pixWidth, pixHeight, mapName); if (proteinInSupportedGenome) { hPrintf("<A HREF=\"../goldenPath/help/pbTracksHelpFiles/pbTracksHelp.shtml#tracks\" TARGET=_blank>"); } else { if (hIsGsidServer()) { hPrintf("<A HREF=\"../goldenPath/help/pbTracksHelpFiles/pbGsid/pbTracksHelp.shtml#tracks\" TARGET=_blank>"); } else { hPrintf("<A HREF=\"../goldenPath/help/pbTracksHelpFiles/pbTracksHelp.shtml#tracks\" TARGET=_blank>"); } } hPrintf("Explanation of Protein Tracks</A><br>"); safef(trackOffset, sizeof(trackOffset), "%d", trackOrigOffset); cgiMakeHiddenVar("trackOffset", trackOffset); /* remember where the AA base origin is so that it can be passed to next PB page */ aaOrigOffset = trackOrigOffset/pbScale; safef(aaOrigOffsetStr, sizeof(aaOrigOffsetStr), "%d", aaOrigOffset); cgiMakeHiddenVar("aaOrigOffset", aaOrigOffsetStr); /* save the following state variables, to be used by PDF/Postcript processing */ cartSetString(cart,"pbt.pbScaleStr", pbScaleStr); cartSetString(cart,"pbt.trackOffset", trackOffset); cartSaveSession(cart); fflush(stdout); }
int CreditCardProcessor::charge(const int pccardid, const int pcvv, const double pamount, double ptax, bool ptaxexempt, double pfreight, double pduty, const int pcurrid, QString &pneworder, QString &preforder, int &pccpayid, QString preftype, int &prefid) { if (DEBUG) qDebug("CCP:charge(%d, %d, %f, %f, %d, %f, %f, %d, %s, %s, %d, %s, %d)", pccardid, pcvv, pamount, ptax, ptaxexempt, pfreight, pduty, pcurrid, pneworder.toAscii().data(), preforder.toAscii().data(), pccpayid, preftype.toAscii().data(), prefid); reset(); if (pamount <= 0) { _errorMsg = errorMsg(-21); return -21; } if (preftype == "cohead" && prefid < 0) { _errorMsg = errorMsg(-40).arg(preftype).arg(prefid); return -40; } QString ccard_x; int returnVal = checkCreditCard(pccardid, pcvv, ccard_x); if (returnVal < 0) return returnVal; if (_metrics->boolean("CCConfirmCharge") && QMessageBox::question(0, tr("Confirm Charge of Credit Card Purchase"), tr("Are you sure that you want to charge credit card %1 " "in the amount of %2 %3?") .arg(ccard_x) .arg(CurrDisplay::currSymbol(pcurrid)) .arg(pamount), QMessageBox::Yes | QMessageBox::Default, QMessageBox::No | QMessageBox::Escape ) == QMessageBox::No) { _errorMsg = errorMsg(40); return 40; } ParameterList dbupdateinfo; returnVal = doCharge(pccardid, pcvv, pamount, ptax, ptaxexempt, pfreight, pduty, pcurrid, pneworder, preforder, pccpayid, dbupdateinfo); if (returnVal > 0) _errorMsg = errorMsg(4).arg(_errorMsg); int ccpayReturn = updateCCPay(pccpayid, dbupdateinfo); if (returnVal == 0 && ccpayReturn != 0) returnVal = ccpayReturn; if (returnVal >= 0) { returnVal = fraudChecks(); if (returnVal < 0) { int voidReturnVal = voidPrevious(pccpayid); return (voidReturnVal < 0) ? voidReturnVal : returnVal; } // TODO: move this logic to postCCCashReceipt? XSqlQuery cashq; if (preftype == "cashrcpt") { if (prefid <= 0) { cashq.exec("SELECT NEXTVAL('cashrcpt_cashrcpt_id_seq') AS cashrcpt_id;"); if (cashq.first()) prefid = cashq.value("cashrcpt_id").toInt(); else if (q.lastError().type() != QSqlError::None) { _errorMsg = errorMsg(4).arg(cashq.lastError().databaseText()); // TODO: log an event? return 1; } cashq.prepare("INSERT INTO cashrcpt (cashrcpt_id," " cashrcpt_cust_id, cashrcpt_amount, cashrcpt_curr_id," " cashrcpt_fundstype, cashrcpt_docnumber," " cashrcpt_bankaccnt_id, cashrcpt_notes, cashrcpt_distdate) " "SELECT :cashrcptid," " ccpay_cust_id, :amount, :curr_id," " ccard_type, ccpay_r_ordernum," " :bankaccntid, :notes, current_date" " FROM ccpay, ccard " "WHERE (ccpay_ccard_id=ccard_id);"); } else cashq.prepare( "UPDATE cashrcpt " "SET cashrcpt_cust_id=ccard_cust_id," " cashrcpt_amount=:amount," " cashrcpt_fundstype=ccard_type," " cashrcpt_bankaccnt_id=:bankaccntid," " cashrcpt_distdate=CURRENT_DATE," " cashrcpt_notes=:notes, " " cashrcpt_curr_id=:curr_id " "FROM ccard " "WHERE ((cashrcpt_id=:cashrcptid)" " AND (ccard_id=:ccardid));" ); cashq.bindValue(":cashrcptid", prefid); cashq.bindValue(":ccardid", pccardid); cashq.bindValue(":amount", pamount); cashq.bindValue(":curr_id", pcurrid); cashq.bindValue(":bankaccntid", _metrics->value("CCDefaultBank").toInt()); cashq.bindValue(":notes", "Credit Card Charge"); cashq.exec(); if (cashq.lastError().type() != QSqlError::None) { _errorMsg = errorMsg(4).arg(cashq.lastError().databaseText()); // TODO: log an event? returnVal = 1; } } else if (preftype == "cohead") { cashq.prepare("SELECT postCCcashReceipt(:ccpayid, :bankaccnt) AS cm_id;"); cashq.bindValue(":ccpayid", pccpayid); cashq.bindValue(":bankaccnt", _metrics->value("CCDefaultBank").toInt()); cashq.exec(); if (cashq.first()) { int cm_id = cashq.value("cm_id").toInt(); if (cm_id < 0) { _errorMsg = "<p>" + errorMsg(4) .arg(storedProcErrorLookup("postCCcashReceipt", cm_id)); returnVal = 3; } cashq.prepare("INSERT INTO payaropen VALUES" " (:payco_ccpay_id, :payco_cohead_id," " :payco_amount, :payco_curr_id);"); cashq.bindValue(":payco_ccpay_id", pccpayid); cashq.bindValue(":payco_cohead_id", cm_id); cashq.bindValue(":payco_amount", pamount); cashq.bindValue(":payco_curr_id", pcurrid); cashq.exec(); if (cashq.lastError().type() != QSqlError::NoError) { _errorMsg = errorMsg(4).arg(cashq.lastError().databaseText()); // TODO: log an event? returnVal = 1; } else { cashq.prepare("INSERT INTO aropenco VALUES" " (:payco_ccpay_id, :payco_cohead_id," " :payco_amount, :payco_curr_id);"); cashq.bindValue(":payco_ccpay_id", cm_id); cashq.bindValue(":payco_cohead_id", prefid); cashq.bindValue(":payco_amount", pamount); cashq.bindValue(":payco_curr_id", pcurrid); cashq.exec(); if (cashq.lastError().type() != QSqlError::NoError) { _errorMsg = errorMsg(4).arg(cashq.lastError().databaseText()); // TODO: log an event? returnVal = 1; } } } else if (cashq.lastError().type() != QSqlError::NoError) { _errorMsg = errorMsg(4).arg(cashq.lastError().databaseText()); // TODO: log an event? returnVal = 1; } } } else if (preftype == "cohead") // record unsuccessful attempt against cohead { XSqlQuery cashq; cashq.prepare("INSERT INTO payco VALUES" " (:payco_ccpay_id, :payco_cohead_id," " :payco_amount, :payco_curr_id);"); cashq.bindValue(":payco_ccpay_id", pccpayid); cashq.bindValue(":payco_cohead_id", prefid); cashq.bindValue(":payco_amount", pamount); cashq.bindValue(":payco_curr_id", pcurrid); cashq.exec(); if (cashq.lastError().type() != QSqlError::NoError) { _errorMsg = errorMsg(4).arg(cashq.lastError().databaseText()); // TODO: log an event? returnVal = 1; } } return returnVal; }