public static string GenerateVTObject()
        {
            VoucherTransfer vc = new VoucherTransfer();

            VoucherType vt = new VoucherType();

            vt.Id          = 1;
            vt.Name        = "MyRewards";
            vt.Description = "$10 Party now";
            vt.Amount      = 10;

            Guid guid    = Guid.NewGuid();
            var  voucher = new Voucher
            {
                VoucherType   = vt,
                Guid          = guid.ToString(),
                Sender_Id     = 1,
                Receiver_Id   = 1,
                ActionType_Id = 0,
                SpendFlag     = false,
                CreatedOn     = DateTime.UtcNow,
                UpdatedOn     = DateTime.UtcNow
            };

            Guid guid2    = Guid.NewGuid();
            var  voucher2 = new Voucher
            {
                VoucherType   = vt,
                Guid          = guid2.ToString(),
                Sender_Id     = 1,
                Receiver_Id   = 1,
                ActionType_Id = 0,
                SpendFlag     = false,
                CreatedOn     = DateTime.UtcNow,
                UpdatedOn     = DateTime.UtcNow
            };

            vc.ReceiverUserName = "******";
            vc.VoucherList.Add(voucher);
            vc.VoucherList.Add(voucher2);

            List <VoucherTransfer> list = new List <VoucherTransfer>();

            list.Add(vc);
            var content = JsonConvert.SerializeObject(list);

            return(content);
        }
        public static VoucherTransferLog PostVoucher(VoucherTransferLog voucherTransferLog, ApplicationDbContext db, NopCommerceContext ndb, IIdentity currentUser)
        {
            try
            {
                var userId = int.Parse(currentUser.GetUserId());
                voucherTransferLog.User_Id   = userId;
                voucherTransferLog.CreatedOn = DateTime.UtcNow;
                db.VoucherTransferLogs.Add(voucherTransferLog);
                db.SaveChanges();

                VoucherTransfer voucherTransfer = JsonConvert.DeserializeObject <List <VoucherTransfer> >(voucherTransferLog.Content).ElementAt(0);

                //NopCommerceUser receiver = ndb.Database.SqlQuery<NopCommerceUser>("SELECT CU.Id AS Customer_Id, Username, Email, null AS Password, null AS PasswordSalt FROM [Customer] CU WHERE CU.Username = '******'").First();

                //FOR STUB PURPOSE ONLY
                var aspUser  = db.Users.Where(u => u.UserName == voucherTransfer.ReceiverUserName).First();
                var receiver = new { Customer_Id = aspUser.Id };

                foreach (var vc in voucherTransfer.VoucherList)
                {
                    var voucher = db.Vouchers.Where(v => v.Id == vc.Id && v.Receiver_Id == userId && v.SpendFlag == false).First();
                    voucher.Receiver_Id     = receiver.Customer_Id;
                    voucher.Sender_Id       = userId;
                    voucher.UpdatedOn       = DateTime.UtcNow;
                    db.Entry(voucher).State = EntityState.Modified;
                    db.SaveChanges();
                }

                voucherTransferLog.Result          = ResultTypes.Success;
                db.Entry(voucherTransferLog).State = EntityState.Modified;
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                voucherTransferLog.Result          = ResultTypes.Failed;
                db.Entry(voucherTransferLog).State = EntityState.Modified;
                db.SaveChanges();
            }
            return(voucherTransferLog);
        }