Example #1
0
        public ActionResult Orderdone(tblorder tb, string total)
        {
            tblorder obj = new tblorder();

            obj.odate      = DateTime.Now;
            obj.opname     = tb.opname;
            obj.opphone    = tb.opphone;
            obj.opaddress  = tb.opaddress;
            obj.opsaddress = tb.opaddress;
            obj.ostatus    = 0;
            obj.oamount    = decimal.Parse(total);
            db.tblorders.Add(obj);
            db.SaveChanges();

            return(RedirectToAction("index"));
        }
        public ActionResult doneorder(tblorder tb, string total)
        {
            tblorder obj = new tblorder();

            obj.odate      = DateTime.Now;
            obj.opname     = tb.opname;
            obj.opphone    = tb.opphone;
            obj.opaddress  = tb.opaddress;
            obj.opsaddress = tb.opsaddress;
            obj.oamount    = decimal.Parse(total);
            obj.ostatus    = 0;
            db.tblorders.Add(obj);  /*Order Table*/
            db.SaveChanges();

            //max order id for order details
            int moid = db.tblorders.Select(a => a.oid).DefaultIfEmpty(0).Max();

            var pro = from prod in ok.c
                      join od in db.tblproes
                      on prod.iid equals od.pid
                      select new { PID = od.pid, PPRICE = od.pprice, PQTY = prod.iqty };

            tblorderdetail orderdetails = new tblorderdetail();

            foreach (var item in pro)
            {
                orderdetails.oid     = moid;
                orderdetails.pid     = item.PID;
                orderdetails.pprice  = item.PPRICE;
                orderdetails.pqty    = item.PQTY;
                orderdetails.pamount = item.PPRICE * item.PQTY;
                db.tblorderdetails.Add(orderdetails);
                db.SaveChanges();
            }
            return(RedirectToAction("Index"));
        }
        /// <summary>
        /// Used to execute and confirm orders (card- and goldorders)
        /// Cardorder: checks if user has enough currency then generates the amount of cards based on cardquantity
        /// Goldorder: creditcard payment, creditcardnumber get checkt via luhn algorithm and data will be send via HTTPS to the Credit Card company
        /// </summary>
        /// <param name="personID"></param>
        /// <param name="packID"></param>
        /// <param name="creditCardNumber"></param>
        public static void ExecuteOrder(int personID, int packID, string creditCardNumber)
        {
            using (var db = new ClonestoneFSEntities())
            {
                tblorder      order = new tblorder();
                tblcollection col   = new tblcollection();
                Random        r     = new Random();

                order.fkpack    = packID;
                order.fkperson  = personID;
                order.orderdate = DateTime.Now;
                db.tblorder.Add(order);
                db.SaveChanges();

                int orderID = (from p in db.tblorder
                               orderby p.idorder descending
                               select p.idorder).FirstOrDefault();

                int cardq = (from q in db.tblpack
                             where q.idpack == packID
                             select q.cardquantity).FirstOrDefault();

                #region Kartenpacks
                if (cardq != 0)
                {
                    // Update Person !
                    try
                    {
                        var updatePerson = (from p in db.tblperson
                                            where p.idperson == personID
                                            select p);

                        var packValue = (from v in db.tblpack
                                         where v.idpack == packID
                                         select v.packprice).FirstOrDefault();

                        foreach (var value in updatePerson)
                        {
                            value.currencybalance -= (int)packValue;
                        }
                        db.SaveChanges();
                    }
                    catch (Exception e)
                    {
                        Log.Writer.LogError(e);
                    }

                    // Insert Cards !
                    for (int i = 0; i < cardq; i++)
                    {
                        int rng  = r.Next(1, 698);
                        var card = (from c in db.tblcard
                                    where c.idcard == rng
                                    select c).FirstOrDefault();

                        if (card != null)
                        {
                            col.fkperson = personID;
                            col.fkorder  = orderID;
                            col.fkcard   = card.idcard;

                            db.tblcollection.Add(col);
                            db.SaveChanges();
                        }
                        else
                        {
                            i = i - 1;
                        }
                    }
                }
                #endregion

                #region Goldpacks
                else
                {
                    //TODO - ausbessern
                    if (true)
                    {
                        tblperson person       = new tblperson();
                        var       updatePerson = (from p in db.tblperson
                                                  where p.idperson == personID
                                                  select p);

                        var goldValue = (from g in db.tblpack
                                         where g.idpack == packID
                                         select g.goldquantity).FirstOrDefault();

                        foreach (var value in updatePerson)
                        {
                            value.currencybalance += (int)goldValue;
                        }
                        db.SaveChanges();
                    }
                    else
                    {
                        //was auch immer
                    }
                }
                #endregion
            }
        }