Пример #1
0
        public IActionResult Post([FromBody] JObject formData)
        {
            _logger.LogDebug($"Received: {formData}");

            if (formData == null)
            {
                _logger.LogError($"No data submitted");
                return(BadRequest());
            }

            StringValues apiHeader;
            string       token = null;

            if (Request.Headers.TryGetValue("api-key", out apiHeader))
            {
                token = apiHeader.ElementAt <string>(0);
                _logger.LogDebug($"Found 'api-key' header: {token}");
            }
            else
            {
                _logger.LogError($"No api-key header");
                return(Unauthorized());
            }

            _logger.LogInformation("Submitted Token: " + token);

            FormApiMap formApiMap;

            // Look for cache key.
            if (!_cache.TryGetValue(token, out formApiMap))
            {
                _logger.LogInformation("API key (" + token + ") not found in cache. Calling FormRepository!");
                var startCache = DateTime.Now;
                _logger.LogInformation("Started API Key Middleware lookup: " + startCache.ToString());
                formApiMap = _apiFormRepository.GetFormApiMap(token).Result;
                var endCache = DateTime.Now;
                _logger.LogInformation("Finished API Key Middleware lookup: " + DateTime.Now.ToString() + " - (" + endCache.Subtract(startCache).TotalMilliseconds + "ms)");


                // Set cache options.
                var cacheEntryOptions = new MemoryCacheEntryOptions()
                                        // Keep in cache for this time, reset time if accessed.
                                        .SetSlidingExpiration(TimeSpan.FromMinutes(1));

                // Save data in cache.
                _cache.Set(token, formApiMap, cacheEntryOptions);
            }
            else
            {
                _logger.LogInformation("API key (" + token + ") found in cache!");
            }


            _logger.LogInformation("Sending data for Key: " + formData);
            _messageService.SendEmailAsync(formApiMap.EmailInfo, formData.ToString());

            return(Ok(new { }));
        }
        public async Task <ActionResult> Edit(string id, FormTemplate editedFormTemplate)
        {
            try
            {
                //return View();
                Form editedForm = await _formRepository.GetForm(GetUserObjectId(), id);

                editedForm.FormTemplate = editedFormTemplate;
                _formRepository.InsertOrUpdateForm(GetUserObjectId(), editedForm);
                FormApiMap formApiMap = await _apiFormRepository.GetFormApiMap(editedForm.ApiKey);

                formApiMap.EmailInfo = editedFormTemplate;
                _apiFormRepository.InsertUpdateFormApiMap(GetUserObjectId(), formApiMap);
                ViewData["FormId"] = id;
                //return RedirectToAction(nameof(FormController.Index), "Form");
                return(View(editedFormTemplate));
            }
            catch
            {
                return(View());
            }
        }