Example #1
0
        /// <summary>
        /// the response for the new ticket request
        /// </summary>
        /// <param name="subdomain">the site's subdomain</param>
        /// <param name="consumerKey">your consumerKey</param>
        /// <param name="consumerSecret">your conumserSecret</param>
        /// <param name="accessToken">the user's access token</param>
        /// <param name="accessTokenSecret">the user's access token secret</param>
        /// <param name="email">the user's mail adress</param>
        /// <param name="subject">the ticket subject</param>
        /// <param name="message">the ticket message</param>
        /// <returns>the server resopnse for the new ticket request</returns>
        private async Task <IRestResponse> CreateNewTicketResponse(string subdomain, string consumerKey, string consumerSecret, string accessToken, string accessTokenSecret, string email, string subject, string message)
        {
            _client.BaseUrl       = new Uri(string.Format("https://{0}.uservoice.com/api/v1/", subdomain));
            _client.Authenticator = OAuth1Authenticator.ForProtectedResource(consumerKey, consumerSecret, accessToken, accessTokenSecret);

            RestRequest request = new RestRequest("tickets.json", HttpMethod.Post);

            request.AddHeader("If-Modified-Since", DateTime.Now.ToUniversalTime().ToString("R"));


            var ticket = new PostTicket
            {
                TicketDetail = new PostTicket.TicketDetails
                {
                    UserMailAddress = email,
                    Subject         = subject,
                    Message         = message,
                }
            };

            request.AddJsonBody(ticket);

            return(await _client.Execute(request));
        }
        public ActionResult Create(PostTicket ticket)
        {
            int     postPerDay    = int.Parse(Settings.get("TicketPostPerDay"));
            var     UserId        = WebSecurity.GetUserId(User.Identity.Name);
            Boolean checkSellable = unitOfWork.UserRepository.GetById(UserId).Sellable;
            int     noTicket      = this.unitOfWork.TicketRepository.Get().Where(t => t.CreatedDate.Value.Date == DateTime.Today && t.UserId == UserId).Count();

            ViewBag.NoPostTicket = noTicket;
            ViewBag.noSetting    = postPerDay;
            ViewBag.Sellable     = checkSellable;
            ViewBag.EventId      = new SelectList(this.unitOfWork.EventRepository.GetAvailable(), "EventId", "EventName");
            ViewBag.ProvinceId   = new SelectList(this.unitOfWork.ProvinceRepository.Get(), "ProvinceId", "ProvinceName");
            ViewBag.VenueId      = new SelectList(this.unitOfWork.VenueRepository.GetAvailable(), "VenueId", "VenueName");
            ViewBag.CategoryId   = unitOfWork.CategoryRepository.Get(c => c.Category2 == null).Where(c => c.Status != 2).Select(r => new
            {
                r.CategoryId,
                r.CategoryName,
                Childs = r.Category1.Select(r2 => new
                {
                    r2.CategoryId,
                    r2.CategoryName,
                    ParentId = r2.Category2.CategoryId
                })
            });

            ticket.UserId = WebSecurity.GetUserId(User.Identity.Name);
            double receivemoney = (int)(ticket.SellPrice * (1 - service));

            if (ModelState.IsValid)
            {
                if (Request.Form["CreateEvent"] != null) // create new event
                {
                    if (ticket.HoldDate <= DateTime.Now)
                    {
                        Session["Message"]     = "Ngày diễn ra sự kiện không được nhỏ hơn hiện tại";
                        Session["MessageType"] = "error";
                        return(View());
                    }
                    if (Request.Form["CreateVenue"] != null) // create new venue
                    {
                        // add new venue
                        Venue venue = new Venue()
                        {
                            VenueName  = ticket.VenueName,
                            Address    = ticket.Address,
                            ProvinceId = (int)ticket.ProvinceId,
                            Status     = (int)Statuses.Venue.Disapprove
                        };
                        this.unitOfWork.VenueRepository.AddOrUpdate(venue);
                        this.unitOfWork.Save();

                        // add new event
                        Event newEvent = new Event()
                        {
                            EventName  = ticket.EventName,
                            Status     = (int)Statuses.Event.Disapprove,
                            HoldDate   = (DateTime)ticket.HoldDate,
                            CategoryId = ticket.CategoryId,
                            VenueId    = venue.VenueId
                        };

                        this.unitOfWork.EventRepository.AddOrUpdate(newEvent);
                        this.unitOfWork.Save();

                        // add new ticket
                        Ticket NewTicket = new Ticket()
                        {
                            EventId      = newEvent.EventId,
                            SeriesNumber = ticket.SeriesNumber,
                            SellPrice    = ticket.SellPrice,
                            ReceiveMoney = (System.Math.Floor(receivemoney / 500)) * 500,
                            Seat         = ticket.Seat,
                            Description  = ticket.Description,
                            Status       = (int)Statuses.Ticket.Pending,
                            UserId       = ticket.UserId
                        };
                        this.unitOfWork.TicketRepository.AddOrUpdate(NewTicket);
                        this.unitOfWork.Save();
                    }

                    else //if(ticket.EventId!=null)
                    {
                        // add new event
                        Event newEvent = new Event()
                        {
                            EventName  = ticket.EventName,
                            Status     = (int)Statuses.Event.Disapprove,
                            HoldDate   = (DateTime)ticket.HoldDate,
                            CategoryId = (int)ticket.CategoryId,
                            VenueId    = (int)ticket.VenueId
                        };
                        this.unitOfWork.EventRepository.AddOrUpdate(newEvent);
                        this.unitOfWork.Save();

                        // add new ticket with EventName was created in db
                        Ticket NewTicket = new Ticket()
                        {
                            EventId      = newEvent.EventId,
                            SeriesNumber = ticket.SeriesNumber,
                            SellPrice    = ticket.SellPrice,
                            ReceiveMoney = (System.Math.Floor(receivemoney / 500)) * 500,
                            Seat         = ticket.Seat,
                            Description  = ticket.Description,
                            Status       = (int)Statuses.Ticket.Pending,
                            UserId       = ticket.UserId
                        };
                        this.unitOfWork.TicketRepository.AddOrUpdate(NewTicket);
                        this.unitOfWork.Save();
                    }
                }
                else
                {
                    Ticket NewTicket = new Ticket()
                    {
                        EventId      = (int)ticket.EventId,
                        SeriesNumber = ticket.SeriesNumber,
                        SellPrice    = ticket.SellPrice,
                        ReceiveMoney = (System.Math.Floor(receivemoney / 500)) * 500,
                        Seat         = ticket.Seat,
                        Description  = ticket.Description,
                        Status       = (int)Statuses.Ticket.Ready,
                        UserId       = ticket.UserId
                    };
                    this.unitOfWork.TicketRepository.AddOrUpdate(NewTicket);
                    this.unitOfWork.Save();
                }

                Session["Message"]     = "Bạn đã đăng vé thành công !";
                Session["MessageType"] = "success";
                return(RedirectToAction("Index", "Home"));
            }

            return(View(ticket));
        }