Beispiel #1
0
        /// <summary>
        /// Get the coupon list
        /// </summary>
        /// <param name="req">Request parameters needed to do the request to Viking Spots</param>
        /// <param name="callback">Delegate that handles the callback</param>
        public GetPOSCouponResult GetCoupon(GetPOSCouponRequest req, ref HttpStatusCode status)
        {
            // This is a GET
            RestRequest request = new RestRequest(string.Format("poscoupon/?{0}", req.ToQueryString()), Method.GET);

            IRestResponse response = apiClient.Get(request);

            status = response.StatusCode;

            // Check that we received a status we expect
            if (response.StatusCode == HttpStatusCode.OK ||
                response.StatusCode == HttpStatusCode.BadRequest ||
                response.StatusCode == HttpStatusCode.InternalServerError ||
                response.StatusCode == HttpStatusCode.PaymentRequired)
            {
                return JsonConvert.DeserializeObject<GetPOSCouponResult>(response.Content);
            }

            return null;
        }
        /// <summary>
        /// Do API request GetCoupon and send response back to the client
        /// </summary>
        /// <param name="doc">request XML</param>
        /// <param name="client">client that send the request</param>
        /// <param name="message">The message containing the request</param>
        private void DealByPAN(XmlDocument doc)
        {
            // Extract parameters from request
            int merchant_id = Convert.ToInt32(doc.DocumentElement.GetAttribute("mid"));
            string card_pan = doc.DocumentElement.GetAttribute("pan");
            int terminal_id = Convert.ToInt32(doc.DocumentElement.GetAttribute("tid"));

            GetPOSCouponRequest request = new GetPOSCouponRequest(merchant_id, card_pan, terminal_id);
            HttpStatusCode code = HttpStatusCode.NotFound;
            GetPOSCouponResult response = api.GetCoupon(request, ref code);

            if (response != null)
            {
                BuildAndSendResponse(code, response, (writer) =>
                {
                    /*
                         * Expand the response with custom stuff for this kind of request
                         *
                         * Example:
                         *
                         * <rsp code="0" seq="" dsp="" prt="">
                         *  <lst id="deals">
                         *      <row>
                         *          <fld id="dealId" val="" />
                         *          <fld id="name" val="" />
                         *          <fld id="user" val="" />
                         *      </row>
                         *  </lst>
                         *</rsp>
                         */

                    //writer.WriteAttributeString("dsp", "Coupon list has been retrieved");
                    //writer.WriteAttributeString("prt", "Please choose the correct one");
                    writer.WriteStartElement("lst");

                    writer.WriteAttributeString("id", "deals");

                    foreach (POSCoupon coupon in response.response.coupons)
                    {
                        writer.WriteStartElement("row");

                        writer.WriteStartElement("fld");
                        writer.WriteAttributeString("id", "dealId");
                        writer.WriteAttributeString("val", coupon.id.ToString());
                        writer.WriteEndElement(); // fld end element

                        writer.WriteStartElement("fld");
                        writer.WriteAttributeString("id", "name");
                        writer.WriteAttributeString("val", coupon.name.Substring(0, 16));
                        writer.WriteEndElement(); // fld end element

                        writer.WriteStartElement("fld");
                        writer.WriteAttributeString("id", "user");
                        writer.WriteAttributeString("val", coupon.user);
                        writer.WriteEndElement(); // fld end element

                        writer.WriteEndElement(); // row end element
                    }
                    writer.WriteEndElement(); // lst end element
                });
            }
        }