Exemplo n.º 1
0
        public virtual void RecordClicks(EVENT_DATA_TYPE evt)
        {
            string accid = evt.userinfo.accountid;

            DETAILS_ON_JOB_COMPLETED_TYPE details = (DETAILS_ON_JOB_COMPLETED_TYPE)evt.details;
            JOB_RESULTS_BASE_TYPE         jr      = (JOB_RESULTS_BASE_TYPE)details.JobResults;

            RESOURCE_PAPER_TYPE[] paperout;
            if (jr is JOB_RESULTS_COPY_TYPE)
            {
                paperout = ((JOB_RESULTS_COPY_TYPE)jr).resources.paperout;
            }
            else if (jr is JOB_RESULTS_PRINT_TYPE)
            {
                paperout = ((JOB_RESULTS_PRINT_TYPE)jr).resources.paperout;
            }
            else if (jr is JOB_RESULTS_SCAN_TYPE)
            {
                paperout = ((JOB_RESULTS_SCAN_TYPE)jr).resources.paperout;
            }
            else if (jr is JOB_RESULTS_SCAN_TYPE)
            {
                paperout = ((JOB_RESULTS_DOCFILING_TYPE)jr).resources.paperout;
            }
            else
            {
                return;
            }

            RecordSheetCounts(accid, paperout, jr);
        }
Exemplo n.º 2
0
        protected virtual void RecordSheetCounts(string accid,
                                                 RESOURCE_PAPER_TYPE[] pout, JOB_RESULTS_BASE_TYPE results)
        {
            foreach (RESOURCE_PAPER_TYPE pt in pout)
            {
                // See if this RESOURCE_PAPER_TYPE meets the criteria for counting its clicks.
                // In order for a RESOURCE_PAPER_TYPE to count, it must have a "color-mode"
                // property, and must NOT HAVE a "papersize" property.
                if (!IsForCountingClicks(pt))
                {
                    break;
                }

                uint sheetCount = Convert.ToUInt32(pt.sheetcount);

                foreach (PROPERTY_SET_TYPE property in pt.property)
                {
                    RecordSheetCount(accid, sheetCount, property.sysname, property.Value, results);
                }
            }
        }
Exemplo n.º 3
0
 protected abstract void RecordSheetCount(string accid, uint sheetCount,
                                          string propName, string propValue, JOB_RESULTS_BASE_TYPE results);
Exemplo n.º 4
0
            protected override void RecordSheetCount(string accid, uint sheetCount, string propName, string propValue, JOB_RESULTS_BASE_TYPE results)
            {
                if (!UserAccount.Has(accid))
                {
                    return;
                }
                UserAccount uac       = UserAccount.Get(accid);
                string      paperSize = string.Empty;

                foreach (PROPERTY_SET_TYPE propType in results.properties)
                {
                    if (propType.sysname.IndexOf("original-size", StringComparison.OrdinalIgnoreCase) >= 0)
                    {
                        paperSize = propType.Value;
                        break;
                    }
                }


                JOB_MODE_TYPE     jobMode   = results.jobmode;
                E_JOB_STATUS_TYPE jobStatus = results.jobstatus.status;

                if (jobStatus.ToString().ToUpper() == "FINISHED")
                {
                    string keyLine = MapJobModeToLimits(jobMode) + "," + propName + "," + propValue;

                    // Fog Big size Pages
                    int    pageScaler   = int.Parse(WebConfigurationManager.AppSettings["PageScaler"].ToString());
                    string bigSizePages = WebConfigurationManager.AppSettings["BigSizePages"].ToString();
                    if (string.IsNullOrEmpty(paperSize) == false && bigSizePages.ToLower().IndexOf(paperSize.ToLower()) >= 0)
                    {
                        sheetCount = (uint)(sheetCount / pageScaler);
                    }

                    lock (uac)
                    {
                        uint currentLimit = uac.limit[keyLine];
                        uint newLimit     = (currentLimit > sheetCount) ? (currentLimit - sheetCount) : 0;
                        uac.limit[keyLine] = newLimit;
                        string jobType = MapKeylineToJobType(keyLine);

                        // Update Job Type

                        try
                        {
                            Helper.UserAccount.Get(accid).jobType = jobType;
                        }
                        catch (Exception) { }

                        //AccountingBSL.UpdateLimit(accid, jobType, newLimit, sheetCount, paperSize);
                    }
                }
            }