Beispiel #1
0
        public async Task <ResultInfo> CreateRequestAsync(CreateHelpRequest request)
        {
            ResultInfo helpDeskResult = null;

            if (_options.IsHelpDeskEnabled)
            {
                helpDeskResult = await _helpDeskManager.AddRequestAsync(request);
            }

            ResultInfo slackResult = null;

            if (_options.IsSlackEnabled)
            {
                slackResult = await _slackManager.SendMessageAsync(request, _options.AppName);
            }

            if ((helpDeskResult?.IsSuccess ?? true) && (slackResult?.IsSuccess ?? true))
            {
                return(new ResultInfo(HttpStatusCode.OK));
            }

            return(helpDeskResult?.StatusCode == HttpStatusCode.GatewayTimeout ||
                   helpDeskResult?.StatusCode == HttpStatusCode.RequestTimeout ||
                   slackResult?.StatusCode == HttpStatusCode.RequestTimeout ||
                   slackResult?.StatusCode == HttpStatusCode.RequestTimeout
                    ? new ResultInfo(HttpStatusCode.BadRequest, "Help center service was not able to receive your request at this time. Please try again or contact administrator for more information.")
                    : new ResultInfo(HttpStatusCode.BadRequest, "Current Request can’t be submitted at this time. Please try again or contact administrator for more information."));
        }
Beispiel #2
0
        public Task <ResultInfo> SendMessageAsync(CreateHelpRequest message, string appName = null)
        {
            return(RetryUtils.DoAsync(async() =>
            {
                var text = new StringBuilder();
                if (!string.IsNullOrEmpty(appName))
                {
                    text.AppendLine($"*AppName:* {appName}");
                }
                text.AppendLine($"*From:* {message.Email}");
                text.AppendLine($"*Subject:* {message.Subject}");
                text.AppendLine($"*Description:* {message.Description}");

                var slack = new SlackClient(_options.Url);
                var slackMessage = new SlackMessage()
                {
                    Channel = _options.Channel,
                    Text = text.ToString(),
                    Username = _options.Username,
                    IconEmoji = Emoji.Angel
                };
                return await slack.PostAsync(slackMessage) ? new ResultInfo(HttpStatusCode.OK) : new ResultInfo(HttpStatusCode.BadRequest, "Error in post message");
            },
                                      TimeSpan.FromMilliseconds(500),
                                      3,
                                      false,
                                      exception => { LoggerUtils.Log("SlackManager exception", exception, nameof(SlackManager)); }));
        }
Beispiel #3
0
        public Task <ResultInfo> AddRequestAsync(CreateHelpRequest model)
        {
            return(RetryUtils.DoAsync(async() =>
            {
                var baseUrl = new Uri(new Uri(_options.Url), _addRequestApiMethod);
                var client = new RestClient(baseUrl);

                var request = new RestRequest(Method.POST);
                var outgoingQueryString = HttpUtility.ParseQueryString(string.Empty);
                outgoingQueryString.Add("apikey", _options.ApiKey);
                outgoingQueryString.Add("group", _options.Group);
                outgoingQueryString.Add("businessUnit", _options.BusinessUnit);
                outgoingQueryString.Add("email", model.Email);
                outgoingQueryString.Add("subject", model.Subject);
                outgoingQueryString.Add("description", model.Description);
                var postdata = outgoingQueryString.ToString();

                request.AddParameter("application/x-www-form-urlencoded", postdata, ParameterType.RequestBody);

                var response = await client.ExecuteTaskAsync(request);

                if (!response.IsSuccessful)
                {
                    LoggerUtils.Log($"HelpDesk API request was failed with code: {response.StatusCode}" + Environment.NewLine
                                    + $"Response: {response.Content}",
                                    _logFileName);
                    return new ResultInfo(response.StatusCode, _invalidRequestMessage);
                }

                var responseModel = JsonConvert.DeserializeObject <CreateHelpDeskRequestResponse>(response.Content);

                if (responseModel.Response.Result.Status == CreateHelpDeskRequestResponse.Status.Failure)
                {
                    LoggerUtils.Log($"HelpDesk API AddRequest was failed with message: {responseModel.Response.Result.Message}", _logFileName);
                    return new ResultInfo(HttpStatusCode.BadRequest, _invalidRequestMessage);
                }

                return new ResultInfo(HttpStatusCode.OK);
            },
                                      TimeSpan.FromMilliseconds(500),
                                      3,
                                      false,
                                      exception => { LoggerUtils.Log("HelpDeskManager exception", exception, _logFileName); }));
        }