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(); }
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(); }