/// <summary>
 /// 0=Success, 1=InvalidExpirationDate, 2=InvalidCvv, 3=InvalidProduct, 4=InvalidPaymentAmount
 /// </summary>        
 public int DoPurchase(string purchaseRequest)
 {
     JavaScriptSerializer serializer = new JavaScriptSerializer();
     PurchaseRequest request = (PurchaseRequest)serializer.Deserialize(purchaseRequest, typeof(PurchaseRequest));
     using (MundiShopEntities db = new MundiShopEntities())
     {
         if (request.CreditCardExpirationYear < DateTime.Now.Year ||
         (request.CreditCardExpirationYear == DateTime.Now.Year && request.CreditCardExpirationMonth < DateTime.Now.Month))
         {
             return 1;
         }
         if (String.IsNullOrWhiteSpace(request.CreditCardCvv) || request.CreditCardCvv.Length != 3)
             return 2;
         Product product = db.Product.FirstOrDefault(p => p.Id == request.ProductId);
         if (product == null)
             return 3;
         if (request.AmountPaid != product.Price)
             return 4;
         Purchase purchase = new Purchase()
         {
             CreditCardCvv = request.CreditCardCvv,
             CreditCardExpirationMonth = request.CreditCardExpirationMonth,
             CreditCardExpirationYear = request.CreditCardExpirationYear,
             CreditCardFlag = request.CreditCardFlag,
             CreditCardNumber = request.CreditCardNumber,
             CustomerName = request.CustomerName,
             dateCreate= DateTime.Now
         };
         purchase.Product.Add(product);
         db.Purchase.AddObject(purchase);
         db.SaveChanges();
         return 0;
     }
 }
 /// <summary>
 /// Create a new Purchase object.
 /// </summary>
 /// <param name="id">Initial value of the Id property.</param>
 /// <param name="creditCardFlag">Initial value of the CreditCardFlag property.</param>
 /// <param name="creditCardExpirationYear">Initial value of the CreditCardExpirationYear property.</param>
 /// <param name="creditCardExpirationMonth">Initial value of the CreditCardExpirationMonth property.</param>
 /// <param name="dateCreate">Initial value of the dateCreate property.</param>
 public static Purchase CreatePurchase(global::System.Int32 id, global::System.Int32 creditCardFlag, global::System.Int32 creditCardExpirationYear, global::System.Int32 creditCardExpirationMonth, global::System.DateTime dateCreate)
 {
     Purchase purchase = new Purchase();
     purchase.Id = id;
     purchase.CreditCardFlag = creditCardFlag;
     purchase.CreditCardExpirationYear = creditCardExpirationYear;
     purchase.CreditCardExpirationMonth = creditCardExpirationMonth;
     purchase.dateCreate = dateCreate;
     return purchase;
 }
 /// <summary>
 /// Deprecated Method for adding a new object to the Purchase EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToPurchase(Purchase purchase)
 {
     base.AddObject("Purchase", purchase);
 }