コード例 #1
0
        public static void SetAuthenticationTicket(this HttpContextBase httpContext, User user, string[] roles, bool isPersistent)
        {
            var ticket = new UserTicket
                {
                    Name = user.Username,
                    UserId = user.UserId,
                    Roles = roles != null && roles.Length > 0
                                ? roles.Aggregate((c, n) => c + "," + n)
                                : string.Empty,
                };

            var jsonSerializer = new JavaScriptSerializer();

            var userData = jsonSerializer.Serialize(ticket);

            var authTicket = new FormsAuthenticationTicket(1, user.Username,
                                                           DateTime.Now, DateTime.Now.AddHours(8),
                                                           isPersistent, userData);

            var encryptedTicket = FormsAuthentication.Encrypt(authTicket);

            var authCookie = new HttpCookie(FormsCookieName, encryptedTicket)
                {
                    Expires = isPersistent ? authTicket.Expiration : DateTime.MinValue
                };

            httpContext.Response.Cookies.Add(authCookie);
        }
コード例 #2
0
ファイル: packetDTO.cs プロジェクト: firerings/ski-proto-01
        public void Default()
        {
            uid = 0;

            profile = new UserProfile();
            profile.nm = string.Empty;
            profile.lv = 1;
            profile.xp = 1;
            profile.tt = 10;

            money = new UserMoney();
            money.gld = 500000;

            ticket = new UserTicket();
            ticket.val = 1000;
            ticket.date = 10000;

        }
コード例 #3
0
        private async Task <UsersWechat> GetUserMsg(string url, UserTicket tiket)
        {
            //序列化将要传输的对象
            string obj = JsonConvert.SerializeObject(tiket);

            using (HttpClient client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                var result = await client.PostAsync(url, new StringContent(obj));

                if (result.IsSuccessStatusCode)
                {
                    string re = await result.Content.ReadAsStringAsync();

                    var jo = JObject.Parse(re);
                    if (jo.IsValid(schema))
                    {
                        var m = JsonConvert.DeserializeObject <UsersWechat>(re);
                        return(m);
                    }
                }
            }
            return(null);
        }
コード例 #4
0
ファイル: TicketController.cs プロジェクト: erenpinaz/BiBilet
        public async Task <ActionResult> Register(RegisterTicketEditModel model)
        {
            try
            {
                var ticket = await UnitOfWork.TicketRepository.GetTicketAsync(model.TicketId);

                if (ticket == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.NotFound));
                }
                if (ticket.Quantity - ticket.UserTickets.Count == 0 || ticket.Type != TicketType.Free)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.Forbidden));
                }

                var userTicket = new UserTicket
                {
                    TicketId     = model.TicketId,
                    UserId       = GetGuid(User.Identity.GetUserId()),
                    OwnerName    = string.Format("{0} {1}", model.FirstName, model.LastName),
                    OwnerEmail   = model.Email,
                    OwnerAddress = model.Address,
                    OrderNumber  = Guid.NewGuid().ToString("N"),
                    OrderDate    = DateTime.UtcNow
                };

                UnitOfWork.UserTicketRepository.Add(userTicket);
                await UnitOfWork.SaveChangesAsync();
            }
            catch
            {
                //TODO: Log error
            }

            return(RedirectToAction("MyTickets", "Ticket"));
        }
コード例 #5
0
        public ActionResult SubmitTransaction([Bind(Include = "TransactionID,Payment,TransactionDate, UserTickets, User, PopcornPointsSpent, OtherPayment")] Transaction transaction, string SearchGiftee, Payment Payment, String OtherPayment)
        {
            Transaction t = db.Transactions.Find(transaction.TransactionID);

            t.Payment = Payment;
            AppUser AU = t.User;

            // Dan - I changed the code here from OtherPayment == null to what's below
            // TODO: Test to see if it's working completely
            if (t.Payment != Payment.OtherCreditCard ||
                ((t.Payment == Payment.OtherCreditCard && OtherPayment == "") || (t.Payment == Payment.OtherCreditCard && CreditCard.GetCreditCardType(OtherPayment) != "Invalid")))
            {
                Debug.WriteLine(Utilities.TransactionValidation.TicketValidation(t));
                if (Utilities.TransactionValidation.TicketValidation(t) == true)
                {
                    if (ModelState.IsValid)
                    {
                        if (SearchGiftee != null && SearchGiftee != "")
                        {
                            var roles       = db.Roles.Where(r => r.Name == "Customer");
                            var roleId      = roles.First().Id;
                            var dbCustomers = from user in db.Users
                                              where user.Roles.Any(r => r.RoleId == roleId)
                                              select user;
                            var Giftee = dbCustomers.Where(u => u.Email == SearchGiftee);

                            AppUser RGiftee = Giftee.FirstOrDefault();

                            if (RGiftee == null)
                            {
                                ViewBag.ErrorMessage   = "The user can't be found";
                                ViewBag.PaymentOptions = GetAllPayments(AU.Id);
                                return(View(t));
                            }

                            foreach (UserTicket item in t.UserTickets)
                            {
                                if (item.Showing.Movie.MPAA_Rating == MPAA.NC17 || item.Showing.Movie.MPAA_Rating == MPAA.R)
                                {
                                    if (Utilities.TransactionValidation.AgeCalc(RGiftee.Birthday) < 18)
                                    {
                                        ViewBag.PaymentOptions = GetAllPayments(AU.Id);
                                        ViewBag.ErrorMessage   = "You can't gift a NC-17 or R rated movie to a minor";
                                        return(View(t));
                                    }
                                }
                            }
                            t.Giftee = RGiftee;
                        }


                        if (Payment == Payment.CreditCardNumber1)
                        {
                            String ccType = (CreditCard.GetCreditCardType(AU.CreditCardNumber1));

                            t.PaymentUsed = String.Format("{0}{1}{2}", "**** **** **** ", (AU.CreditCardNumber1.Substring(AU.CreditCardNumber1.Length - 4, 4)), " " + ccType);
                        }
                        if (Payment == Payment.CreditCardNumber2)
                        {
                            String ccType = (CreditCard.GetCreditCardType(AU.CreditCardNumber2));

                            t.PaymentUsed = String.Format("{0}{1}{2}", "**** **** **** ", (AU.CreditCardNumber2.Substring(AU.CreditCardNumber2.Length - 4, 4)), " " + ccType);
                        }
                        if (Payment == Payment.OtherCreditCard)
                        {
                            String ccType = (CreditCard.GetCreditCardType(OtherPayment));

                            t.PaymentUsed = String.Format("{0}{1}{2}", "**** **** **** ", (OtherPayment.Substring(OtherPayment.Length - 4, 4)), " " + ccType);
                        }

                        // checks if any showing has a special showing
                        Boolean showingSpecial = false;
                        foreach (UserTicket ticket in t.UserTickets)
                        {
                            if (ticket.Showing.Special == true)
                            {
                                showingSpecial = true;
                                break;
                            }
                        }

                        if (transaction.Payment == Payment.PopcornPoints)
                        {
                            t.PaymentUsed = "Popcorn Points";

                            if (Utilities.TransactionValidation.PPCalc(t) == false)
                            {
                                ViewBag.ErrorMessage   = "You don't have enough Popcorn Points to purchase these tickets";
                                ViewBag.PaymentOptions = GetAllPayments(AU.Id);
                                return(View(t));
                            }
                            else if (showingSpecial)
                            {
                                ViewBag.ErrorMessage = "One or more showing is special. Popcorn points are not allowed.";
                                return(View(t));
                            }
                            else
                            {
                                Int32 CurPopPoints = t.User.PopcornPoints;
                                Int32 intTickets   = t.UserTickets.Count();
                                Int32 PPTickets    = intTickets * 100;
                                t.User.PopcornPoints = CurPopPoints - PPTickets;
                                t.PopcornPointsSpent = PPTickets;


                                foreach (UserTicket ut in t.UserTickets)
                                {
                                    UserTicket userTicket = db.UserTickets.Find(ut.UserTicketID);
                                    userTicket.CurrentPrice = 0;
                                    // what is this entitystate.modified??
                                    db.Entry(userTicket).State = EntityState.Modified;
                                    db.SaveChanges();
                                }
                            }
                        }


                        db.Entry(t).State = EntityState.Modified;
                        db.SaveChanges();
                        return(RedirectToAction("ConfirmTransaction", new { id = t.TransactionID }));
                    }
                }
                else
                {
                    ViewBag.ErrorMessage   = "Transaction may not contain overlapping showings or different showings for the same movie.";
                    ViewBag.PaymentOptions = GetAllPayments(t.User.Id);
                    return(View(t));
                }
            }

            ViewBag.ErrorMessage   = "Invalid card number";
            ViewBag.PaymentOptions = GetAllPayments(t.User.Id);
            return(View(t));
        }
コード例 #6
0
    public static string UpdateTicket(dynamic obj)
    {
        try
        {
            using (var db = new MSEsystemEntities1())
            {
                int id        = Convert.ToInt32(obj["Id"]);
                var b         = db.Ticket.Where(i => i.Id == id).FirstOrDefault();
                var oldStatus = b.Status;
                b.Id          = id;
                b.LocationID  = Convert.ToInt32(obj["LocationID"]);
                b.Priority    = Convert.ToBoolean(obj["Priority"]);
                b.Description = Convert.ToString(obj["Description"]);

                DateTime dateValue;
                string   s       = Convert.ToString(obj["Date"]);
                var      formats = new[] { "dd-MM-yyyy", "dd/MM/yyyy", "yyyy-MM-dd HH:mm:ss", "dd-MM-yyyy HH:mm:ss", "dd-MM-yyyy HH:mm" };
                if (DateTime.TryParseExact(s, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateValue))
                {
                    b.TimeClose = dateValue;
                }
                else
                {
                    b.TimeClose = DateTime.Now;
                }
                b.Status = Convert.ToInt32(obj["Status"]);

                if (b.Status == 1)
                {
                    var z = db.UserTicket.Where(i => i.TicketID == id).ToArray();
                    foreach (UserTicket ut in z)
                    {
                        db.UserTicket.Remove(ut);
                    }
                }
                if (b.Status == 2 && oldStatus == 1)
                {
                    var z = db.UserTicket.Where(i => i.TicketID == id).ToArray();
                    foreach (UserTicket ut in z)
                    {
                        db.UserTicket.Remove(ut);
                    }
                    var user = Convert.ToInt32(obj["CurrUser"]);
                    var nut  = new UserTicket();
                    nut.UserID   = user;
                    nut.TicketID = b.Id;
                    nut.MainUser = true;
                    db.UserTicket.Add(nut);
                }
                //foreach (var t in obj["tasks"])
                //{
                //    int tid = Convert.ToInt32(t["TaskID"]);
                //    var k = db.Task.Where(i => i.Id == tid).FirstOrDefault();
                //    k.Done = Convert.ToBoolean(t["Done"]);
                //}

                db.SaveChanges();

                if (Convert.ToInt32(obj["AnotherAsignee"]) > 0)
                {
                    var isNew = false;
                    var z     = db.UserTicket.Where(i => i.TicketID == id && i.MainUser == false).FirstOrDefault();
                    if (z == null)
                    {
                        isNew = true;
                        z     = new UserTicket();
                    }

                    z.TicketID = id;
                    z.UserID   = Convert.ToInt32(obj["AnotherAsignee"]);
                    z.MainUser = false;

                    if (isNew)
                    {
                        db.UserTicket.Add(z);
                    }
                    db.SaveChanges();
                }


                db.SaveChanges();

                return("ok");
            }
        }
        catch (Exception e)
        {
            throw e;
        }
    }
コード例 #7
0
 public void EditUserTicket(UserTicket userTicket)
 {
     _utRepository.Edit(userTicket);
 }
コード例 #8
0
 public void DeleteTicket(UserTicket userTicket)
 {
     _utRepository.Delete(userTicket);
 }
コード例 #9
0
 public void AddUserTicket(UserTicket userTicket)
 {
     _utRepository.Add(userTicket);
     ConnectToSheet();
     TicketToSheet(userTicket);
 }
コード例 #10
0
 public void Delete(UserTicket userTicket)
 {
     _context.UserTickets.Remove(userTicket);
     _context.SaveChanges();
 }
コード例 #11
0
        public void OpenUserTicketsTest()
        {
            AuthorizationService = MockRepository.GenerateStub <IAuthorizationService>();
            StationRepository    = MockRepository.GenerateStub <IStationRepository>();
            LanguageRepository   = MockRepository.GenerateStub <ILanguageRepository>();
            LineProvider         = MockRepository.GenerateStub <ILineProvider>();
            BusinessPropsHelper  = MockRepository.GenerateStub <IBusinessPropsHelper>();
            DataBinding          = MockRepository.GenerateStub <IDataBinding>();
            ConfidenceFactor     = MockRepository.GenerateStub <IConfidenceFactor>();


            IoCContainer.Kernel.Bind <IDataBinding>().ToConstant <IDataBinding>(DataBinding).InSingletonScope();
            IoCContainer.Kernel.Bind <IAuthorizationService>().ToConstant <IAuthorizationService>(AuthorizationService).InSingletonScope();
            IoCContainer.Kernel.Bind <IStationRepository>().ToConstant <IStationRepository>(StationRepository).InSingletonScope();
            IoCContainer.Kernel.Bind <ILanguageRepository>().ToConstant <ILanguageRepository>(LanguageRepository).InSingletonScope();
            IoCContainer.Kernel.Bind <ILineProvider>().ToConstant <ILineProvider>(LineProvider).InSingletonScope();
            IoCContainer.Kernel.Bind <IBusinessPropsHelper>().ToConstant <IBusinessPropsHelper>(BusinessPropsHelper).InSingletonScope();
            IoCContainer.Kernel.Bind <IConfidenceFactor>().ToConstant <IConfidenceFactor>(ConfidenceFactor).InSingletonScope();

            ConfidenceFactor.Expect(x => x.CalculateFactor(new Ticket())).Return(1000000).IgnoreArguments();

            StationRepository.TurnOffCashInInit = true;
            StationRepository.Expect(x => x.AllowAnonymousBetting).Return(true);
            StationRepository.Expect(x => x.IsReady).Return(true);
            StationRepository.Expect(x => x.StationNumber).Return("0024");
            StationRepository.Expect(x => x.HubSettings).Return(new Dictionary <string, string>());
            StationRepository.Currency = "EUR";

            ChangeTracker                           = IoCContainer.Kernel.Get <IChangeTracker>();
            ChangeTracker.CurrentUser               = new AnonymousUser("1", 1);
            ChangeTracker.CurrentUser.Cashpool      = 100000;
            ChangeTracker.CurrentUser.AvailableCash = 100000;


            Dispatcher.Invoke(() =>
            {
                Window = MyRegionManager.FindWindowByViewModel <MainViewModel>();
                Window.Show();
            });

            Thread.Sleep(1000);

            ChangeTracker.CurrentUser = new LoggedInUser(1, "111", 1000)
            {
                Username = "******"
            };

            var header = MyRegionManager.CurrentViewModelInRegion(RegionNames.HeaderRegion) as HeaderViewModel;

            header.OpenAuthorizationCommand.Execute("");

            Thread.Sleep(1000);

            var userProfileMenuViewModel = MyRegionManager.CurrentViewModelInRegion(RegionNames.UserProfileMenuRegion) as UserProfileMenuViewModel;

            var ticket = new UserTicket()
            {
                checkSum = "1234", createdAt = DateTime.Now, ticketNumber = "1241252352346"
            };
            string total;

            WsdlRepository.Expect(x => x.GetUserTickets("1", (ticketCategory)1, new AccountTicketSorting()
            {
                field = AccountTicketSortingFields.DateCreated, value = AccountTicketSortingValues.Desc
            }, 0, 20, out total)).Return(new UserTicket[] { ticket }).OutRef("1000").IgnoreArguments();

            userProfileMenuViewModel.ShowTicketsCommand.Execute("");

            Thread.Sleep(1000);



            Assert.AreEqual(1, ChangeTracker.Tickets.Count);


            var userTicketsViewModel = MyRegionManager.CurrentViewModelInRegion(RegionNames.UserProfileContentRegion) as UserTicketsViewModel;

            Assert.AreEqual(1, userTicketsViewModel.TicketsStartPage);

            Dispatcher.Invoke(() =>
            {
                userTicketsViewModel.SelectedType = userTicketsViewModel.TicketType[3];
            });
            Dispatcher.Invoke(() =>
            {
                userTicketsViewModel.NextPage.Execute("");
            });



            Assert.AreEqual(2, userTicketsViewModel.TicketsStartPage);
            Assert.AreEqual(1, userTicketsViewModel.Tickets.Count);

            if (1000 % userTicketsViewModel.Pagesize > 0)
            {
                Assert.AreEqual(1000 / userTicketsViewModel.Pagesize + 1, userTicketsViewModel.AllPages);
            }

            if (1000 % userTicketsViewModel.Pagesize == 0)
            {
                Assert.AreEqual(1000 / userTicketsViewModel.Pagesize, userTicketsViewModel.AllPages);
            }

            Assert.AreEqual(2, userTicketsViewModel.TicketsStartPage);
            Assert.AreEqual(3, userTicketsViewModel.SelectedType.Id);

            userTicketsViewModel.ShowTicketCommand.Execute(userTicketsViewModel.Tickets[0]);

            var nextModel = MyRegionManager.CurrentViewModelType(RegionNames.UserProfileContentRegion);

            Assert.AreEqual(typeof(TicketDetailsViewModel), nextModel);

            UserProfileViewModel userprofileWindow = null;

            Dispatcher.Invoke(() =>
                              { userprofileWindow = ChangeTracker.UserProfileWindow.DataContext as UserProfileViewModel; });

            WsdlRepository.BackToRecord();

            WsdlRepository.Expect(x => x.GetUserTickets("1", (ticketCategory)1, new AccountTicketSorting()
            {
                field = AccountTicketSortingFields.DateCreated, value = AccountTicketSortingValues.Desc
            }, 0, 20, out total)).Return(new UserTicket[] { ticket, ticket, ticket, ticket }).OutRef("1000").IgnoreArguments();

            WsdlRepository.Replay();
            Dispatcher.Invoke(() =>
                              { userprofileWindow.BackCommand.Execute(""); });

            var prevModel = MyRegionManager.CurrentViewModelInRegion(RegionNames.UserProfileContentRegion);

            Thread.Sleep(1000);

            Assert.AreEqual(4, ((UserTicketsViewModel)prevModel).Tickets.Count);
            Assert.IsTrue(((UserTicketsViewModel)prevModel).AllPages > 0);
            Assert.AreEqual(2, userTicketsViewModel.TicketsStartPage);
            Assert.AreEqual(3, userTicketsViewModel.SelectedType.Id);


            userProfileMenuViewModel.LogoutCommand.Execute("");


            Thread.Sleep(1000);
            WsdlRepository.BackToRecord();
            Dispatcher.Invoke(() =>
            {
                Window.Close();
            });
        }
コード例 #12
0
        //TODO: Removing tickets
        public ActionResult DeleteConfirmed(int id)
        {
            UserTicket userTicket = db.UserTickets.Find(id);

            if (userTicket.Status == Status.Pending)
            {
                // delete ticket
                Transaction t = userTicket.Transaction;
                t.UserTickets.Remove(userTicket);
                db.UserTickets.Remove(userTicket);
                db.SaveChanges();

                // recaculate prices for all tickets in transaction
                foreach (UserTicket ticket in t.UserTickets)
                {
                    ticket.CurrentPrice    = DiscountPrice.GetTicketPrice(ticket);
                    db.Entry(ticket).State = EntityState.Modified;
                    db.SaveChanges();
                }

                return(RedirectToAction("PendingDetails", "Transactions", new { id = t.TransactionID }));
            }
            else
            {
                Transaction t = userTicket.Transaction;

                if (userTicket.Showing.ShowDate > DateTime.Now.AddHours(1))
                {
                    userTicket.CurrentPrice = 0;
                    userTicket.Status       = Status.Returned;
                    userTicket.SeatNumber   = Seat.Seat;
                    db.SaveChanges();

                    if (t.Payment == Payment.PopcornPoints)
                    {
                        t.User.PopcornPoints += 100;
                        t.PopcornPointsSpent -= 100;
                        db.SaveChanges();
                    }

                    if (t.Payment != Payment.PopcornPoints)
                    {
                        Int32 intPopPoints = Convert.ToInt32(userTicket.CurrentPrice - (userTicket.CurrentPrice % 1));

                        t.User.PopcornPoints -= intPopPoints;
                        db.SaveChanges();

                        String Message = "Hello " + userTicket.Transaction.User.FirstName + ",\n\n" + "The ticket for " + userTicket.Showing.ShowDate +
                                         userTicket.Showing.Movie.Title + " has been canceled.\n\n" + "Love,\n" + "Dan";
                        Emailing.SendEmail(userTicket.Transaction.User.Email, "Ticket Canceled", Message);
                    }
                    return(RedirectToAction("Details", "Transactions", new { id = t.TransactionID }));
                }
                else
                {
                    ViewBag.Error = "Tickets for movies less than one hour from the current time may not be cancelled";
                }

                return(View(userTicket));
            }
        }
コード例 #13
0
        public static Decimal GetTicketPrice(UserTicket ticket)
        {
            AppDbContext db          = new AppDbContext();
            Decimal      ticketPrice = ticket.Showing.ShowingPrice;
            // assign price for each ticket

            Boolean weekend = (int)ticket.Showing.ShowDate.DayOfWeek == 6 || (int)ticket.Showing.ShowDate.DayOfWeek == 0;

            Debug.WriteLine(weekend);
            // checks if showing is matinee
            if (ticket.Showing.StartHour < 12 && weekend == false)
            {
                var query = from c in db.Discounts
                            where c.DiscountName == "matinee"
                            select c;
                foreach (var result in query)
                {
                    // sets Current Price property
                    // $5.00
                    ticket.AppliedDiscounts = result.DiscountName;
                    //ticketPrice = ticket.Showing.ShowingPrice - result.DiscountValue;
                }
            }

            // checks if showing day is weekday and afternoon
            else if (ticket.Showing.StartHour >= 12 && ((int)ticket.Showing.ShowDate.DayOfWeek >= 1 && (int)ticket.Showing.ShowDate.DayOfWeek <= 4))
            {
                var query = from c in db.Discounts
                            where c.DiscountName == "weekday"
                            select c;
                foreach (var result in query)
                {
                    // sets Current Price property
                    // $10.00
                    ticket.AppliedDiscounts = result.DiscountName;
                    //ticketPrice = ticket.Showing.ShowingPrice - result.DiscountValue;
                }
            }
            // checks if showing day is after friday noontime
            else
            {
                var query = from c in db.Discounts
                            where c.DiscountName == "weekend"
                            select c;
                foreach (var result in query)
                {
                    // sets Current Price property
                    // $12.00
                    ticket.AppliedDiscounts = result.DiscountName;
                    //ticketPrice = ticket.Showing.ShowingPrice - result.DiscountValue;
                }
            }

            // additional discounts for Non-special showings
            if (ticket.Showing.Special == false)
            {
                // tuesday discount
                if ((int)ticket.Showing.ShowDate.DayOfWeek == 2 && (ticket.Showing.StartHour >= 12 && ticket.Showing.StartHour < 17))
                {
                    var query = from c in db.Discounts
                                where c.DiscountName == "tuesday"
                                select c;
                    foreach (var result in query)
                    {
                        // sets Current Price property
                        // $8.00
                        ticket.AppliedDiscounts += ", " + result.DiscountName;
                        ticketPrice              = result.DiscountValue;
                    }
                }

                //senior citizen discounts for 2 tickets in transcation
                var querySenior = (from u in db.UserTickets
                                   where u.Transaction.TransactionID == ticket.Transaction.TransactionID &&
                                   u.AppliedDiscounts.Contains("senior")
                                   select u).Count();

                if (ticket.Transaction.User.Birthday.AddYears(60) <= ticket.Transaction.TransactionDate && querySenior < 2)
                {
                    var query = from c in db.Discounts
                                where c.DiscountName == "senior"
                                select c;
                    foreach (var result in query)
                    {
                        ticket.AppliedDiscounts += ", " + result.DiscountName;
                        //ticketPrice = ticket.Showing.ShowingPrice - result.DiscountValue;
                        ticketPrice -= result.DiscountValue;
                    }
                }

                // early bird discount
                if ((ticket.Showing.ShowDate - ticket.Transaction.TransactionDate).TotalDays > 2)
                {
                    var query = from c in db.Discounts
                                where c.DiscountName == "earlybird"
                                select c;
                    foreach (var result in query)
                    {
                        ticket.AppliedDiscounts += ", " + result.DiscountName;
                        //ticketPrice = ticket.Showing.ShowingPrice - result.DiscountValue;
                        ticketPrice -= result.DiscountValue;
                    }
                }

                return(ticketPrice);
            }

            else
            {
                return(ticketPrice);
            }
        }
コード例 #14
0
 public void Edit(UserTicket userTicket)
 {
     _context.Entry(userTicket).State = EntityState.Modified;
     _context.SaveChanges();
 }
コード例 #15
0
        public void DeletingTicket_DeletesUserTicket()
        {
            var ticketId = Guid.NewGuid();
            var userId   = Guid.NewGuid();

            var options = GetInMemoryDbContextOptions();

            using (var context = new TrackilyContext(options))
            {
                context.Database.EnsureCreated();

                var user = new TrackilyUser()
                {
                    Id             = userId,
                    CreatedTickets = new List <Ticket>(),
                    AssignedTo     = new List <UserTicket>()
                };

                context.Users.Add(user); // User must exist in the database before creating a Ticket/UserTicket due to FK constraint.
                context.SaveChanges();
            }

            using (var context = new TrackilyContext(options))
            {
                var userSaved = context.Users.Find(userId);
                Assert.NotNull(userSaved);

                var ticket = new Ticket()
                {
                    Project  = new Project(),
                    Creator  = userSaved,
                    TicketId = ticketId,
                    Assigned = new List <UserTicket>()
                };

                var userTicket = new UserTicket()
                {
                    Id       = userId,
                    TicketId = ticketId,
                    Ticket   = ticket,
                    User     = userSaved
                };

                ticket.Assigned.Add(userTicket);

                context.Tickets.Add(ticket);
                context.SaveChanges();
            }

            using (var context = new TrackilyContext(options))
            {
                var ticketSaved = context.Tickets.Find(ticketId);
                Assert.NotNull(ticketSaved);

                var userTicketSaved = context.UserTickets.Find(userId, ticketId);
                Assert.NotNull(userTicketSaved);

                context.Tickets.Remove(ticketSaved);
                context.SaveChanges();
            }

            using (var context = new TrackilyContext(options))
            {
                var tickets = context.Tickets.ToList();
                Assert.Empty(tickets);

                var userTickets = context.UserTickets.ToList();
                Assert.Empty(userTickets);
            }
        }
コード例 #16
0
        /// <summary>
        /// 我应该在0库
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        public async Task TestRedis0(string msg = "我应该在0库")
        {
            UserTicket userTicket = new UserTicket()
            {
                ID      = 1,
                Name    = "dylan",
                UID     = "unid",
                ExpDate = DateTime.Now.AddDays(1)
            };
            //我是写入
            var setAsync = await redisRepository.SetAsync("string", "我是内容", DateTime.Now.AddDays(1));

            setAsync = await redisRepository.SetAsync("string1", "我是内容1", DateTime.Now.AddDays(1) - DateTime.Now);

            setAsync = await redisRepository.SetAsync("json", userTicket.SerializeObject(), DateTime.Now.AddDays(1) - DateTime.Now);

            //我是获取
            var getValueAsync = await redisRepository.GetValueAsync("string");

            getValueAsync = await redisRepository.GetValueAsync("string1");

            var json = await redisRepository.GetValueAsync <UserTicket>("json");

            //我是判断是否存在
            var existAsync = await redisRepository.ExistAsync("string");

            existAsync = await redisRepository.ExistAsync("string1");

            existAsync = await redisRepository.ExistAsync("json");

            //我是删除
            var removeAsync = await redisRepository.RemoveAsync("string");

            removeAsync = await redisRepository.RemoveAsync("string1");

            removeAsync = await redisRepository.RemoveAsync("json");

            //我在0库
            setAsync = await redisRepository.SetAsync("string0", msg, DateTime.Now.AddDays(1));

            #region HashExistsAsync

            /*
             * user_1:
             * ID:1,Key:vis_1,Value:{"ID":1,"Name":"dylan","ExpDate":"2021-09-08 17:22:54","Msg":"我是消息","Code":2,"UnionID":"unid"}
             * ID:2,Key:vis_2,Value:{"ID":2,"Name":"dylan","ExpDate":"2021-09-08 17:22:54","Msg":"我是消息","Code":2,"UnionID":"unid"}
             * ID:3,Key:vis_3,Value:{"ID":3,"Name":"dylan","ExpDate":"2021-09-08 17:22:54","Msg":"我是消息","Code":2,"UnionID":"unid"}
             */
            //我是hash值存储
            for (int i = 0; i < 10; i++)
            {
                string visid = "vis_" + i;
                bool   flag  = await redisRepository.HashExistsAsync("user_1", visid);

                if (!flag)
                {
                    flag = await redisRepository.HashSetAsync("user_1", visid, userTicket);
                }

                flag = await redisRepository.HashDeleteAsync("user_1", visid);
            }
            #endregion


            #region List
            var listLength = await redisRepository.ListLengthAsync("list");

            if (listLength < 10)
            {
                //获取指KEY的集合
                List <UserTicket> list = await redisRepository.ListRangeAsync <UserTicket>("list");


                //入栈
                listLength = await redisRepository.ListLeftPushAsync <UserTicket>("list", userTicket);

                //出栈
                var str = await redisRepository.ListLeftPopAsync <UserTicket>("list");



                //入队
                listLength = await redisRepository.ListRightPushAsync <string>("list", "aaaaaaaaaaa");

                //出队
                var str2 = await redisRepository.ListRightPopAsync <string>("list");
            }
            #endregion
        }
コード例 #17
0
 public void Add(UserTicket userTicket)
 {
     _context.UserTickets.Add(userTicket);
     _context.SaveChanges();
 }