Пример #1
0
        protected override void HandleRequest()
        {
            string response = SerializePackageResponse.Serialize();

            using (StreamWriter wtr = new StreamWriter(Context.Response.OutputStream))
                wtr.Write(response);
        }
Пример #2
0
        protected override void HandleRequest()
        {
            DbAccount acc;

            if (Query["guid"] == null || Query["password"] == null)
            {
                WriteErrorLine("Error.incorrectEmailOrPassword");
            }
            else
            {
                LoginStatus status = Database.Verify(Query["guid"], Query["password"], out acc);
                if (status == LoginStatus.OK)
                {
                    if (Query["packageId"] == null)
                    {
                        WriteLine("<Error>Package ID not declared.</Error>");
                        return;
                    }

                    SerializePackageResponse package = SerializePackageResponse.GetPackage(int.Parse(Query["packageId"]));

                    if (package == null)
                    {
                        WriteLine($"<Error>Package ID {Query["packageId"]} not found.</Error>");
                        return;
                    }

                    if (acc.Credits < package.Price)
                    {
                        WriteLine("<Error>Not enough gold.</Error>");
                        return;
                    }

                    if (Database.CheckPackage(acc, package.PackageId, package.MaxPurchase))
                    {
                        WriteLine($"<Error>You can only purchase {package.Name} {package.MaxPurchase} time{((package.MaxPurchase <= 1) ? "" : "s")}.</Error>");
                        return;
                    }

                    if (package.MaxPurchase != -1)
                    {
                        Database.AddPackage(acc, package.PackageId);
                    }

                    Database.UpdateCredit(acc, -package.Price);

                    int[] gifts = Utils.FromCommaSepString32(package.Contents);

                    List <int> giftsList = acc.Gifts.ToList();

                    foreach (int item in gifts)
                    {
                        giftsList.Add(item);
                    }

                    acc.Gifts = giftsList.ToArray();

                    acc.Flush();
                    acc.Reload();

                    WriteLine("<Success/>");
                }
                else
                {
                    WriteErrorLine(status.GetInfo());
                }
            }
        }