public override IEnumerable <object> Run() { CashShopPurchaseRequestArguments arg = new CashShopPurchaseRequestArguments { ProductNo = base.Operation.ProductNo, OrderQuantity = base.Operation.Quantity, Attribute0 = base.Operation.Attribute0, Attribute1 = base.Operation.Attribute1, Attribute2 = base.Operation.Attribute2, Attribute3 = base.Operation.Attribute3, Attribute4 = base.Operation.Attribute4 }; base.Finished = true; if (this.service.IsCashShopStopped) { base.Entity.SendErrorDialog("CashShop_EmergencyStop"); yield return(new FailMessage("[QueryCashShopPurchaseItemProcessor] service.IsCashShopStopped") { Reason = FailMessage.ReasonCode.LogicalFail }); } else if (base.Entity.CID == -1L) { base.Entity.SendErrorDialog("CashShop_NotReady"); yield return(new FailMessage("[QueryCashShopPurchaseItemProcessor] Entity.CID") { Reason = FailMessage.ReasonCode.LogicalFail }); } else if (base.Entity.BeginPurchaseItem(base.Operation.IsForCommonInven, arg) != null) { yield return(new OkMessage()); } else { yield return(new FailMessage("[QueryCashShopPurchaseItemProcessor] Entity.BeginPurchaseItem") { Reason = FailMessage.ReasonCode.LogicalFail }); } yield break; }
public override IEnumerable <object> Run() { if (this.service.IsCashShopStopped) { base.Entity.SendErrorDialog("CashShop_EmergencyStop"); base.Finished = true; yield return(new FailMessage("[DirectPickUpProcessor] service.IsCashShopStopped") { Reason = FailMessage.ReasonCode.LogicalFail }); } else { DateTime currentTime = DateTime.UtcNow; if (base.Entity.IsConsecutivePurchase(currentTime)) { base.Entity.SendErrorDialog("CashShop_ConsecutivePurchase"); base.Finished = true; yield return(new FailMessage("[DirectPickUpProcessor] Entity.IsConsecutivePurchase") { Reason = FailMessage.ReasonCode.LogicalFail }); } else { base.Entity.UpdatePurchaseTime(currentTime); List <CashShopPurchaseRequestArguments> args = new List <CashShopPurchaseRequestArguments>(); List <int> productnos = new List <int>(); foreach (CashShopItem product in base.Operation.QueryList) { CashShopProductListElement request; if (!this.service.ProductByCashShopItemKey.TryGetValue(product.Key, out request)) { base.Finished = true; Log <DirectPickUpProcessor> .Logger.ErrorFormat("No Cash Item : [{0}/{1}/{2}]", product.ItemClass, product.Price, product.Expire); yield return(new FailMessage("[DirectPickUpProcessor] product.Key") { Reason = FailMessage.ReasonCode.LogicalFail }); yield break; } CashShopPurchaseRequestArguments arg = new CashShopPurchaseRequestArguments { ProductNo = request.ProductNo, OrderQuantity = 1, Attribute0 = product.Attribute0, Attribute1 = product.Attribute1, Attribute2 = product.Attribute2, Attribute3 = product.Attribute3, Attribute4 = product.Attribute4 }; args.Add(arg); productnos.Add(request.ProductNo); } AsyncResultSync sync = new AsyncResultSync(this.service.Thread); IAsyncResult ar = base.Entity.BeginDirectPurchaseItem(args, base.Operation.TotalPrice, base.Operation.IsCredit, new AsyncCallback(sync.AsyncCallback), "DirectPurchase"); if (ar != null) { yield return(sync); } if (ar == null && !sync.Result) { base.Finished = true; foreach (CashShopPurchaseRequestArguments cashShopPurchaseRequestArguments in args) { Log <DirectPickUpProcessor> .Logger.ErrorFormat("[directPickupProcessor Fail - sync.Result : [ UTC : {0}] : {1}", DateTime.UtcNow, cashShopPurchaseRequestArguments.ProductNo); } yield return(new FailMessage("[DirectPickUpProcessor] sync.Result") { Reason = FailMessage.ReasonCode.LogicalFail }); } else { IList <string> value = base.Entity.EndDirectPurchaseItem(ar); base.Finished = true; if (value.Count != base.Operation.QueryList.Count) { foreach (CashShopPurchaseRequestArguments cashShopPurchaseRequestArguments2 in args) { Log <DirectPickUpProcessor> .Logger.ErrorFormat("[directPickupProcessor Fail - value.Count : [ UTC : {0}] : {1}", DateTime.UtcNow, cashShopPurchaseRequestArguments2.ProductNo); } yield return(new FailMessage("[DirectPickUpProcessor] value.Count") { Reason = FailMessage.ReasonCode.LogicalFail }); } else { yield return(base.Entity.GetDirectPurchaseOrderNo(ar)); yield return(productnos); } } } } yield break; }
public override IEnumerable <object> Run() { if (this.service.IsCashShopStopped) { base.Entity.SendErrorDialog("CashShop_EmergencyStop"); base.Finished = true; yield return(new FailMessage("[RequestGoddessProtectionProcessor] service.IsCashShopStopped") { Reason = FailMessage.ReasonCode.LogicalFail }); } else if (base.Entity.CID == -1L) { base.Finished = true; base.Entity.SendErrorDialog("CashShop_NotReady"); yield return(new FailMessage("[RequestGoddessProtectionProcessor] Entity.CID") { Reason = FailMessage.ReasonCode.LogicalFail }); } else { List <CashShopPurchaseRequestArguments> args = new List <CashShopPurchaseRequestArguments>(); string targetItem; if (base.Operation.RequestType == 0) { targetItem = "goddess_protection"; } else { targetItem = "goddess_protection_personal"; } CashShopProductListElement product; if (!this.service.ProductByItemClass.TryGetValue(targetItem, out product)) { base.Finished = true; yield return(new FailMessage("[RequestGoddessProtectionProcessor] targetItem") { Reason = FailMessage.ReasonCode.LogicalFail }); } else { CashShopPurchaseRequestArguments arg = new CashShopPurchaseRequestArguments { ProductNo = product.ProductNo, OrderQuantity = 1, Attribute0 = "", Attribute1 = "", Attribute2 = "", Attribute3 = "", Attribute4 = "" }; args.Add(arg); AsyncResultSync sync = new AsyncResultSync(this.service.Thread); IAsyncResult ar = base.Entity.BeginDirectPurchaseItem(args, product.SalePrice, base.Operation.IsCredit, new AsyncCallback(sync.AsyncCallback), "GoddessProtection"); if (ar != null) { yield return(sync); } if (ar == null && !sync.Result) { base.Finished = true; yield return(new FailMessage("[RequestGoddessProtectionProcessor] !sync.Result") { Reason = FailMessage.ReasonCode.LogicalFail }); } else { IList <string> value = base.Entity.EndDirectPurchaseItem(ar); base.Finished = true; if (value.Count == 0) { yield return(new FailMessage("[RequestGoddessProtectionProcessor] value.Count") { Reason = FailMessage.ReasonCode.LogicalFail }); } else { yield return(new OkMessage()); } } } } yield break; }
public override IEnumerable <object> Run() { if (this.service.IsCashShopStopped) { base.Entity.SendErrorDialog("CashShop_EmergencyStop"); base.Finished = true; yield return(new FailMessage("[DirectPickUpByProductNoProcessor] service.IsCashShopStopped") { Reason = FailMessage.ReasonCode.LogicalFail }); } else { DateTime currentTime = DateTime.UtcNow; if (base.Entity.IsConsecutivePurchase(currentTime)) { base.Entity.SendErrorDialog("CashShop_ConsecutivePurchase"); base.Finished = true; yield return(new FailMessage("[DirectPickUpByProductNoProcessor] Entity.IsConsecutivePurchase") { Reason = FailMessage.ReasonCode.LogicalFail }); } else { base.Entity.UpdatePurchaseTime(currentTime); List <CashShopPurchaseRequestArguments> args = new List <CashShopPurchaseRequestArguments>(); Dictionary <string, int> resultDic = new Dictionary <string, int>(); int price = 0; foreach (int productNo in base.Operation.ProductNoList) { CashShopProductListElement request; if (!this.service.ProductByProductID.TryGetValue(productNo, out request)) { base.Finished = true; Log <DirectPickUpByProductNoProcessor> .Logger.ErrorFormat("No Cash Item : [{0}]", productNo); yield return(new FailMessage("[DirectPickUpByProductNoProcessor] productNo") { Reason = FailMessage.ReasonCode.LogicalFail }); yield break; } CashShopPurchaseRequestArguments arg = new CashShopPurchaseRequestArguments { ProductNo = request.ProductNo, OrderQuantity = 1, Attribute0 = "", Attribute1 = "", Attribute2 = "", Attribute3 = "", Attribute4 = "" }; if (resultDic.ContainsKey(request.ProductID)) { Dictionary <string, int> dictionary; string productID; (dictionary = resultDic)[productID = request.ProductID] = dictionary[productID] + 1; } else { resultDic.Add(request.ProductID, 1); } args.Add(arg); price += request.SalePrice; } AsyncResultSync sync = new AsyncResultSync(this.service.Thread); IAsyncResult ar = base.Entity.BeginDirectPurchaseItem(args, price, base.Operation.IsCredit, new AsyncCallback(sync.AsyncCallback), "DirectPurchase"); if (ar != null) { yield return(sync); } if (ar == null && !sync.Result) { base.Finished = true; string failReason = "BeginDirectPurchaseItem failed"; yield return(failReason); yield return(new FailMessage("[DirectPickUpByProductNoProcessor] sync.Result") { Reason = FailMessage.ReasonCode.LogicalFail }); } else { IList <string> value = base.Entity.EndDirectPurchaseItem(ar); base.Finished = true; if (value == null || value.Count != base.Operation.ProductNoList.Count) { string failReason = "EndDirectPurchaseItem failed."; yield return(failReason); yield return(new FailMessage("[DirectPickUpByProductNoProcessor] value.Count") { Reason = FailMessage.ReasonCode.LogicalFail }); } else { yield return(base.Entity.GetDirectPurchaseOrderNo(ar)); yield return(resultDic); } } } } yield break; }
public override IEnumerable <object> Run() { CashShopPurchaseRequestArguments arg = new CashShopPurchaseRequestArguments { ProductNo = base.Operation.ProductNo, OrderQuantity = base.Operation.Quantity, Attribute0 = base.Operation.Attribute0, Attribute1 = base.Operation.Attribute1, Attribute2 = base.Operation.Attribute2, Attribute3 = base.Operation.Attribute3, Attribute4 = base.Operation.Attribute4 }; if (this.service.IsCashShopStopped) { base.Finished = true; base.Entity.SendErrorDialog("CashShop_EmergencyStop"); yield return(new FailMessage("[QueryCashShopPurchaseGiftProcessor] service.IsCashShopStopped") { Reason = FailMessage.ReasonCode.LogicalFail }); } else if (base.Entity.CID == -1L) { base.Finished = true; base.Entity.SendErrorDialog("CashShop_NotReady"); yield return(new FailMessage("[QueryCashShopPurchaseGiftProcessor] Entity.CID") { Reason = FailMessage.ReasonCode.LogicalFail }); } else { QueryCIDByName queryCID = new QueryCIDByName(base.Operation.TargetName); UnifiedNetwork.OperationService.OperationSync queryCIDSync = new UnifiedNetwork.OperationService.OperationSync { Service = this.service, ServiceCategory = "PlayerService.PlayerService", Operation = queryCID }; yield return(queryCIDSync); if (!queryCIDSync.Result) { base.Finished = true; Log <QueryCashShopPurchaseGiftProcessor> .Logger.ErrorFormat("No cid for name.", base.Operation.TargetName); yield return(new FailMessage("[QueryCashShopPurchaseGiftProcessor] queryCIDSync.Result") { Reason = FailMessage.ReasonCode.LogicalFail }); } else { base.Finished = true; if (base.Entity.BeginPurchaseGift(arg, string.Format("Char{0}", queryCID.CID), base.Operation.Message) != null) { yield return(new OkMessage()); } else { yield return(new FailMessage("[QueryCashShopPurchaseGiftProcessor] Entity.BeginPurchaseGift") { Reason = FailMessage.ReasonCode.LogicalFail }); } } } yield break; }