コード例 #1
0
        public override async Task <ConfirmedTicketResponse> FinalizeTickets(TicketRequest request, ServerCallContext context)
        {
            var response = new ConfirmedTicketResponse()
            {
                Success = false
            };

            try
            {
                var tickets = await _repository.GetTicketsAsync(request.TicketIds.ToArray());

                if (tickets.Count() == request.TicketIds.Count())
                {
                    // TODO actually remove, I'm just deleting it for demo
                    foreach (var ticket in tickets)
                    {
                        var ticketMessage = _mapper.Map <TicketMessage>(ticket);
                        response.Tickets.Add(ticketMessage);
                        _repository.Delete(ticket);
                    }

                    if (await _repository.SaveAllAsync())
                    {
                        response.Success = true;
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("Failed to finalize tickets.", ex);
                response.UserMessage = "Failed to finalize your tickets. Error occurred.";
            }

            return(response);
        }
コード例 #2
0
        public void GivenATicketInZendeskWithTheSubjectAndDescription(string subject, string description)
        {
            var requesterId =
                _supportUserClient.Search.Find<User>(new ZendeskQuery<User>().WithCustomFilter("email",
                    ConfigurationManager.AppSettings["zendeskenduserusername"], FilterOperator.Equals)).Results.First().Id;

            var ticket = new Ticket
            {
                Subject = subject,
                Comment = new TicketComment {Body = description},
                RequesterId = requesterId,
                Type = TicketType.question,
                Status = TicketStatus.Solved
            };
            var ticketRequest = new TicketRequest {Item = ticket};

            _ticket = _supportUserClient.Tickets.Post(ticketRequest).Item;

            _ticket.Status = TicketStatus.Solved;

            _ticket = _supportUserClient.Tickets.Put(new TicketRequest
                {
                    Item = _ticket
                }
            ).Item;
        }
コード例 #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            // Define some configuration options for the QlikView Server
            TicketConfiguration config = new TicketConfiguration()
            {
                GetWebTicketUri = new Uri("http://localhost/QvAJAXZfc/GetWebTicket.aspx")
            };

            // Create a ticket request with userid and groups (semicolon separated)
            TicketRequest request = new TicketRequest()
            {
                UserId = "rikard",
                Groups = new string[] { "PreSales", "Stockholm" }
            };

            // The response will contain the generated ticket, a redirect uri and possible error message
            TicketResponse response = new TicketResponse().GetTicket(request, config);

            if (response.ErrorMessage == null)
            {
                Response.Redirect(response.RedirectUri, true);
            }
            else
            {
                Response.Write("Error: " + response.ErrorMessage);
            }
        }
コード例 #4
0
        /// <summary>
        /// 写用户认证
        /// </summary>
        /// <param name="ticketRequest">用户票据</param>
        /// <param name="createPersistentCookie">是否创建持久性Cookie</param>
        public void Ticket(TicketRequest ticketRequest, bool createPersistentCookie)
        {
            var ticket = new FormsAuthenticationTicket(
                1,
                ticketRequest.SysNo.ToString(),
                DateTime.Now,
                DateTime.Now.Add(FormsAuthentication.Timeout),
                createPersistentCookie,
                ticketRequest.ToJson(),
                FormsAuthentication.FormsCookiePath);

            var encryptedTicket = FormsAuthentication.Encrypt(ticket);

            var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)
            {
                HttpOnly = true
            };

            if (ticket.IsPersistent)
            {
                cookie.Expires = ticket.Expiration;
            }
            cookie.Secure = FormsAuthentication.RequireSSL;
            cookie.Path   = FormsAuthentication.FormsCookiePath;
            if (FormsAuthentication.CookieDomain != null)
            {
                cookie.Domain = FormsAuthentication.CookieDomain;
            }

            HttpContext.Current.Response.Cookies.Add(cookie);
        }
コード例 #5
0
        public override async Task <TicketResponse> ReserveTickets(TicketRequest request, ServerCallContext context)
        {
            var response = new TicketResponse()
            {
                Success = false
            };

            try
            {
                var tickets = await _repository.GetTicketsAsync(request.TicketIds.ToArray());

                if (tickets.Count() == request.TicketIds.Count())
                {
                    // TODO actually reserve, but for demo not necessary
                    response.Success = true;
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("Failed to reserve tickets.", ex);
                response.UserMessage = "Failed to reserve your tickets. Error occurred.";
            }

            return(response);
        }
コード例 #6
0
        public void GivenATicketInZendeskWithTheSubjectAndDescription(string subject, string description)
        {
            var requesterId =
                _supportUserClient.Search.Find <User>(new ZendeskQuery <User>().WithCustomFilter("email",
                                                                                                 ConfigurationManager.AppSettings["zendeskenduserusername"], FilterOperator.Equals)).Results.First().Id;

            var ticket = new Ticket
            {
                Subject = subject,
                Comment = new TicketComment {
                    Body = description
                },
                RequesterId = requesterId,
                Type        = TicketType.question,
                Status      = TicketStatus.Solved
            };
            var ticketRequest = new TicketRequest {
                Item = ticket
            };

            _ticket = _supportUserClient.Tickets.Post(ticketRequest).Item;

            _ticket.Status = TicketStatus.Solved;

            _ticket = _supportUserClient.Tickets.Put(new TicketRequest
            {
                Item = _ticket
            }
                                                     ).Item;
        }
コード例 #7
0
 public Ticket(TicketRequest request, Flight flight, int id)
 {
     Id       = id;
     Price    = request.Price;
     FlightId = flight.Id;
     Flight   = flight;
 }
コード例 #8
0
        // PUT api/<controller>/5
        /// <summary>
        /// Modifica un ticket
        /// </summary>
        /// <param name="ticket">Ticket a modificar</param>
        /// <returns></returns>
        public IHttpActionResult Put(int id, TicketRequest ticket)
        {
            var originalTicket = TicketService.GetById(id);

            var ret = TicketService.UpdateTicket(originalTicket, ticket);

            return(Ok());
        }
コード例 #9
0
        public IHttpActionResult Post(TicketRequest ticket)
        {
            var result = TicketService.CreateTicket(ticket);

            return(Created <Entidad>("", new Entidad {
                Id = result.Id
            }));
        }
コード例 #10
0
 public static Ticket ToTicket(this TicketRequest ticket)
 {
     return(new Ticket
     {
         EventName = ticket.EventName,
         Owner = ticket.Owner
     });
 }
コード例 #11
0
 public void Tickets_BuyTickets(TicketRequest request)
 {
     // TODO: Place your code here for processing the TicketRequest transaction
     //this method will do the following
     //  a) validate there is sufficient seats left for the show
     //  b) create a record for each requested ticket
     //  c) this must be done as a transaction
 }
コード例 #12
0
        public Ticket CreateTicket(TicketRequest ticketRequest)
        {
            const string apiMethod = "/Tickets/Ticket";

            ticketRequest.EnsureValidData(RequestTypes.Create);

            var parameters = new RequestBodyBuilder();

            parameters.AppendRequestData("subject", ticketRequest.Subject);
            parameters.AppendRequestData("fullname", ticketRequest.FullName);
            parameters.AppendRequestData("email", ticketRequest.Email);
            parameters.AppendRequestData("contents", ticketRequest.Contents);
            parameters.AppendRequestData("departmentid", ticketRequest.DepartmentId);
            parameters.AppendRequestData("ticketstatusid", ticketRequest.TicketStatusId);
            parameters.AppendRequestData("ticketpriorityid", ticketRequest.TicketPriorityId);
            parameters.AppendRequestData("tickettypeid", ticketRequest.TicketTypeId);

            if (ticketRequest.AutoUserId != null)
            {
                parameters.AppendRequestData("autouserid", Convert.ToInt32(ticketRequest.AutoUserId));
            }
            else if (ticketRequest.UserId != null)
            {
                parameters.AppendRequestData("userid", ticketRequest.UserId);
            }
            else if (ticketRequest.StaffId != null)
            {
                parameters.AppendRequestData("staffid", ticketRequest.StaffId);
            }

            if (ticketRequest.OwnerStaffId != null)
            {
                parameters.AppendRequestData("ownerstaffid", ticketRequest.OwnerStaffId);
            }

            if (ticketRequest.TemplateGroupId != null)
            {
                parameters.AppendRequestData("templategroup", ticketRequest.TemplateGroupId);
            }
            else if (!string.IsNullOrEmpty(ticketRequest.TemplateGroupName))
            {
                parameters.AppendRequestData("templategroup", ticketRequest.TemplateGroupName);
            }

            if (ticketRequest.IgnoreAutoResponder != null)
            {
                parameters.AppendRequestData("ignoreautoresponder", Convert.ToInt32(ticketRequest.IgnoreAutoResponder));
            }

            if (ticketRequest.CreationType != null)
            {
                parameters.AppendRequestData("type", EnumUtility.ToApiString(ticketRequest.CreationType));
            }

            var tickets = this.Connector.ExecutePost <TicketCollection>(apiMethod, parameters.ToString());

            return(tickets.Count > 0 ? tickets[0] : null);
        }
コード例 #13
0
 public static Ticket MapToTicket(TicketRequest ticketRequest)
 {
     return(new Ticket()
     {
         Id = ticketRequest.Id,
         Owner = ticketRequest.Owner,
         EventName = ticketRequest.EventName
     });
 }
コード例 #14
0
        public async Task <bool> ReserveTickets(int[] tickets)
        {
            var client  = new TicketMessageService.TicketMessageServiceClient(_channelProvider.ProvideChannel());
            var request = new TicketRequest();

            request.TicketIds.Add(tickets);
            var response = await client.ReserveTicketsAsync(request);

            return(response.Success);
        }
コード例 #15
0
        public Ticket CreateTicket(TicketRequest ticket)
        {
            var entityToInsert = new Ticket()
            {
            };

            MergeTicket(entityToInsert, ticket);
            TicketRepository.Insert(entityToInsert);
            return(entityToInsert);
        }
コード例 #16
0
        public async Task <SendMessageResponse> SendMessageToSqsQueue(TicketRequest request)
        {
            SendMessageRequest sendMessageRequest = new SendMessageRequest
            {
                QueueUrl    = "https://sqs.eu-west-1.amazonaws.com/891123523376/TicketRequest",
                MessageBody = request.Serialize(request)
            };

            return(await _amazonSqsClient.SendMessageAsync(sendMessageRequest));
        }
コード例 #17
0
        public async Task <IActionResult> SendMessage(TicketRequest request)
        {
            var response = await sqsService.SendMessageToSqsQueue(request);

            if (response == null)
            {
                return(BadRequest());
            }
            return(Ok());
        }
コード例 #18
0
        /// <summary>
        /// Return print ticket in Cloud Job Ticket (CJT) format for the print job (for GCP 2.0, currently not implemented since the need of cdd)
        /// Reference: https://developers.google.com/cloud-print/docs/proxyinterfaces#fetch
        /// </summary>
        /// <param name="jobId">The id of the job</param>
        /// <param name="cancellationToken">Cancellation token</param>
        /// <returns>The print ticket</returns>
        public async Task <CloudJobTicket> GetCloudJobTicketAsync(TicketRequest request, CancellationToken cancellationToken = default(CancellationToken))
        {
            await UpdateTokenAsync(cancellationToken);

            return(await GoogleCloudPrintBaseUrl
                   .AppendPathSegment("ticket")
                   .WithOAuthBearerToken(_token.AccessToken)
                   .PostUrlEncodedAsync(new { jobid = request.JobId, use_cjt = request.UseCjt }, cancellationToken)
                   .ReceiveJsonButThrowIfFails <CloudJobTicket>()
                   .ConfigureAwait(false));
        }
コード例 #19
0
        public async Task RaiseTicketAsync_WhenTicketRequestIsCreated_ShouldReturnId()
        {
            // Arrange
            TicketRequest request = new TicketRequest("foo", "foo", 1);

            // Act
            int actualId = await this.sut.RaiseTicketAsync(request);

            // Assert
            actualId.Should().Be(createdTicketRequestId);
        }
コード例 #20
0
        public async Task <SendMessageResponse> SendMessageToSqsQueue(TicketRequest request)
        {
            var sendMessageRequest = new SendMessageRequest
            {
                //demo
                QueueUrl    = "https://sqs.us-east-1.amazonaws.com/.../sqs_name",
                MessageBody = request.Serialize()
            };

            return(await SqsClient.SendMessageAsync(sendMessageRequest));
        }
コード例 #21
0
        public async Task <ActionResult <TicketResponse> > SendMessage([FromBody] TicketRequest ticketRequest)
        {
            var response = await _sqsService.SendMessageToSqsQueue(ticketRequest);

            if (response == null)
            {
                return(BadRequest());
            }

            return(Ok(response));
        }
コード例 #22
0
        public void Put_Called_BuildsUri()
        {
            // Given
            var request = new TicketRequest { Item = new Ticket { Subject = "blah blah", Id = 123 } };
            var ticketResource = new TicketResource(_client.Object);

            // When
            ticketResource.Put(request);

            // Then
            _client.Setup(b => b.BuildUri(It.IsAny<string>(), ""));
        }
コード例 #23
0
        public void UpdateTicket_TemplateGroupName()
        {
            var ticketRequest = new TicketRequest
            {
                Id = 39,
                TemplateGroupName = "templatename"
            };

            const string parameters = "templategroup=templatename";

            this.UpdateTicketRequest(parameters, ticketRequest);
        }
コード例 #24
0
        private void UpdateTicketRequest(string parameters, TicketRequest ticketRequest)
        {
            var apiMethod = string.Format("/Tickets/Ticket/{0}", ticketRequest.Id);

            this.kayakoApiRequest.Setup(x => x.ExecutePut <TicketCollection>(apiMethod, parameters)).Returns(this.responseTicketCollection);

            var ticket = this.ticketController.UpdateTicket(ticketRequest);

            this.kayakoApiRequest.Verify(x => x.ExecutePut <TicketCollection>(apiMethod, parameters), Times.Once());

            Assert.That(ticket, Is.EqualTo(this.responseTicketCollection.FirstOrDefault()));
        }
コード例 #25
0
        public async Task <string> Update(TicketRequest request)
        {
            var json        = JsonConvert.SerializeObject(request);
            var httpContent = new StringContent(json, Encoding.UTF8, "application/json");

            var client = _httpClientFactory.CreateClient();

            client.BaseAddress = new Uri("https://localhost:5001");
            var response = await client.PostAsync("api/Ticket/Update", httpContent);

            return(await response.Content.ReadAsStringAsync());
        }
コード例 #26
0
        private void CreateTicketRequest(string parameters, TicketRequest ticketRequest)
        {
            const string apiMethod = "/Tickets/Ticket";

            this.kayakoApiRequest.Setup(x => x.ExecutePost <TicketCollection>(apiMethod, parameters)).Returns(this.responseTicketCollection);

            var ticket = this.ticketController.CreateTicket(ticketRequest);

            this.kayakoApiRequest.Verify(x => x.ExecutePost <TicketCollection>(apiMethod, parameters), Times.Once());

            Assert.That(ticket, Is.EqualTo(this.responseTicketCollection.FirstOrDefault()));
        }
コード例 #27
0
        public void UpdateTicket_TemplateGroupId()
        {
            var ticketRequest = new TicketRequest
            {
                Id = 39,
                TemplateGroupId = 1
            };

            const string parameters = "templategroup=1";

            UpdateTicketRequest(parameters, ticketRequest);
        }
コード例 #28
0
        public async Task <SendMessageResponse> SendMessageToSqsQueue(TicketRequest request)
        {
            var sendMessageRequest = new SendMessageRequest()
            {
                QueueUrl    = @"https://sqs.us-west-2.amazonaws.com/959393741857/TicketRequest",
                MessageBody = request.Serialize()
            };

            var response = await _amazonSQS.SendMessageAsync(sendMessageRequest);

            return(response);
        }
コード例 #29
0
        public async Task <IActionResult> CreateTicketAsync([FromBody] TicketRequest ticket, [FromQuery] Guid?token)
        {
            //
            // Note:
            // We are mocking out the use of user authorization tokens in this project.  This would not be a secure model
            // in the real world.  We would want to implement a proper identity server to handle JWT.
            //
            // Example:
            // https://developer.okta.com/blog/2018/03/23/token-authentication-aspnetcore-complete-guide
            // http://hamidmosalla.com/2017/12/07/policy-based-authorization-using-asp-net-core-2-identityserver4/

            IActionResult response = null;

            try
            {
                if (token == null)
                {
                    throw new SessionNotFoundException("User session token not provided.");
                }

                UserSession userSession = await this.SessionManager.GetSessionAsync(token.Value)
                                          .ConfigureAwait(false);

                Ticket newTicket = new Ticket
                {
                    Description = ticket.Description,
                    Title       = ticket.Title
                };

                Ticket ticketCreated = await this.TicketManager.CreateTicketAsync(userSession, newTicket)
                                       .ConfigureAwait(false);

                response = this.Ok(ticketCreated);
            }
            catch (UnauthorizedAccessException exc)
            {
                response = this.Forbid(exc.Message);
            }
            catch (AccountNotFoundException)
            {
                response = this.Unauthorized();
            }
            catch (SessionNotFoundException)
            {
                response = this.Unauthorized();
            }
            catch (Exception exc)
            {
                response = this.InternalServerError(exc.Message);
            }

            return(response);
        }
コード例 #30
0
        public void Setup()
        {
            _kayakoApiRequest = new Mock <IKayakoApiRequest>();

            _ticketController = new TicketController(_kayakoApiRequest.Object);

            _responseTicketCollection = new TicketCollection
            {
                new Ticket()
            };

            _createTicketRequestRequiredFields = new TicketRequest
            {
                Subject          = "Subject",
                FullName         = "Fullname",
                Email            = "*****@*****.**",
                Contents         = "Contents",
                DepartmentId     = 1,
                TicketStatusId   = 2,
                TicketPriorityId = 3,
                TicketTypeId     = 4
            };

            _createTicketRequiredFieldsParameters = "subject=Subject&fullname=Fullname&[email protected]&contents=Contents&departmentid=1&ticketstatusid=2&ticketpriorityid=3&tickettypeid=4";

            _responseTicketCustomFields = new TicketCustomFields
            {
                FieldGroups = new List <TicketCustomFieldGroup>
                {
                    new TicketCustomFieldGroup
                    {
                        Id     = 1,
                        Title  = "Title",
                        Fields = new[]
                        {
                            new TicketCustomField
                            {
                                Type         = TicketCustomFieldType.Text,
                                Name         = "FieldName1",
                                FieldContent = "content1"
                            },
                            new TicketCustomField
                            {
                                Type         = TicketCustomFieldType.Text,
                                Name         = "FieldName2",
                                FieldContent = "content2"
                            }
                        }
                    }
                }
            };
        }
コード例 #31
0
        public async Task <IActionResult> Delete(TicketRequest request)
        {
            try
            {
                var response = await _ticketApiClient.Delete(request);

                return(RedirectToAction("index"));
            }
            catch
            {
                return(View());
            }
        }
コード例 #32
0
        public void ApplyOrderRuleCanHostRequestTest()
        {
            var layout = new List <string> {
                "2 3", "3 4 5", "6 7 8"
            };

            Theatre.Instance.ParseLayout(layout);
            var ticketRequest = new TicketRequest {
                PartyName = "Test1", TicketCount = 3
            };

            Assert.DoesNotThrow(() => Theatre.Instance.ApplyRule(ticketRequest));
        }
コード例 #33
0
        public void Put_TicketHasNoId_ThrowsException()
        {
            // Given
            var response = new TicketResponse { Item = new Ticket { Subject = "blah blah" } };
            var request = new TicketRequest { Item = new Ticket { Subject = "blah blah" } };
            _client.Setup(b => b.Put<TicketResponse>(It.IsAny<Uri>(), request, "application/json")).Returns(response);
            var ticketResource = new TicketResource(_client.Object);

            // When, Then
            Assert.Throws<ArgumentException>(() => ticketResource.Put(request));
        }
コード例 #34
0
        public void Put_CalledWithTicket_ReturnsTicketReponse()
        {
            // Given
            var response = new TicketResponse { Item = new Ticket { Subject = "blah blah" } };
            var request = new TicketRequest { Item = new Ticket { Subject = "blah blah", Id = 123 } };
            _client.Setup(b => b.Put<TicketResponse>(It.IsAny<Uri>(), request, "application/json")).Returns(response);
            var ticketResource = new TicketResource(_client.Object);

            // When
            var result = ticketResource.Put(request);

            // Then
            Assert.That(result, Is.EqualTo(response));
        }