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()); } }