Exemplo n.º 1
0
        public override void UpdateCallBack(string tableId, object recordKey, object newPayload)
        {
            switch (this.currentState)
            {
            case PaymentState.UpdateW:
                this.currentState = PaymentState.ReadD;
                var dpk = new DistrictPkey {
                    D_ID = input.D_ID, D_W_ID = input.W_ID
                };
                this.dpkStr = dpk.ToString();
                this.AddReq(this.dpkStr);
                break;

            case PaymentState.UpdateD:
                // credit info
                this.currentState = PaymentState.UpdateC;
                if (cpl.C_CREDIT == Constants.BadCredit)
                {
                    uint[] tmp     = { C_ID, input.C_D_ID, input.C_W_ID, input.D_ID, input.W_ID };
                    var    newData = string.Join(" ", tmp) + " " + input.H_AMOUNT + "|" + cpl.C_DATA;
                    if (newData.Length > Constants.Max_C_DATA)
                    {
                        newData = newData.Substring(0, Constants.Max_C_DATA);
                    }
                    cpl.C_DATA = newData;
                }
                this.AddReq(this.cpkStr, JsonConvert.SerializeObject(cpl), OperationType.Update);
                break;

            case PaymentState.UpdateC:
                this.currentState = PaymentState.ReadInitH;
                var hpk = HistoryPayload.GetHPkey();
                this.hpkStr = hpk.ToString();
                this.AddReq(this.hpkStr, null, OperationType.InitiRead);
                break;

            default:
                this.Close("unexcepted update");
                break;
            }
            this.StoreCurrentState();
        }
Exemplo n.º 2
0
        public override void ReadCallback(string tableId, object recordKey, object payload)
        {
            switch (this.currentState)
            {
            case PaymentState.ReadC:
                if (payload == null)
                {
                    this.Close("readC payload null");
                    break;
                }
                this.cpl           = JsonConvert.DeserializeObject <CustomerPayload>(payload as string);
                cpl.C_BALANCE     -= input.H_AMOUNT;
                cpl.C_YTD_PAYMENT += input.H_AMOUNT;
                cpl.C_PAYMENT_CNT += 1;

                this.currentState = PaymentState.ReadW;
                var wpk = new WarehousePkey {
                    W_ID = input.W_ID
                };
                this.wpkStr = wpk.ToString();
                this.AddReq(this.wpkStr);
                break;

            case PaymentState.ReadW:
                if (payload == null)
                {
                    this.Close("readW payload null");
                    break;
                }
                this.currentState = PaymentState.UpdateW;
                wpl        = JsonConvert.DeserializeObject <WarehousePayload>(payload as string);
                wpl.W_YTD += input.H_AMOUNT;
                this.AddReq(this.wpkStr, JsonConvert.SerializeObject(wpl), OperationType.Update);
                break;

            case PaymentState.ReadD:
                if (payload == null)
                {
                    this.Close("readD payload null");
                    break;
                }
                this.currentState = PaymentState.UpdateD;
                dpl        = JsonConvert.DeserializeObject <DistrictPayload>(payload as string);
                dpl.D_YTD += input.H_AMOUNT;
                this.AddReq(this.dpkStr, JsonConvert.SerializeObject(dpl), OperationType.Update);
                break;

            case PaymentState.ReadInitH:
                this.currentState = PaymentState.InsertH;
                var hpl = new HistoryPayload
                {
                    H_C_ID   = C_ID,
                    H_C_D_ID = input.C_D_ID,
                    H_C_W_ID = input.C_W_ID,
                    H_D_ID   = input.D_ID,
                    H_W_ID   = input.W_ID,
                    H_DATA   = wpl.W_NAME + "    " + dpl.D_NAME,
                    H_AMOUNT = input.H_AMOUNT,
                    H_DATE   = input.timestamp
                };
                this.AddReq(this.hpkStr, JsonConvert.SerializeObject(hpl), OperationType.Insert);
                break;

            default:
                this.Close("unexcepted read");
                break;
            }

            this.StoreCurrentState();
        }