public JsonResult DeleteParameters(string key) { bool success = false; string message = ""; try { var metas = repo.GetPuckMeta().Where(x => x.Name == DBNames.EditorSettings && x.Key == key).ToList(); var meta = metas.FirstOrDefault(); metas.ForEach(x => repo.DeleteMeta(x)); //clear cached values var cachePrefix = "editor_settings_"; var cacheKey = cachePrefix + key; cache.Remove(cacheKey); cache.Remove("null_" + cacheKey); var instruction = new PuckInstruction() { Count = 2, ServerName = ApiHelper.ServerName(), InstructionDetail = $"{cacheKey},{"null_" + cacheKey}", InstructionKey = InstructionKeys.RemoveFromCache }; repo.AddPuckInstruction(instruction); repo.SaveChanges(); if (meta != null) { var keyParts = key.Split(new char[] { ':' }); var typeSettings = ApiHelper.EditorSettingTypes().FirstOrDefault(x => x.FullName == keyParts[0]); object model = JsonConvert.DeserializeObject(meta.Value, typeSettings); ApiHelper.OnAfterSettingsDelete(this, new puck.core.Events.AfterEditorSettingsDeleteEventArgs { Setting = (I_Puck_Editor_Settings)model , SettingsTypeFullName = keyParts[0] , ModelTypeName = keyParts[1] , PropertyName = keyParts[2] }); } success = true; } catch (Exception ex) { success = false; message = ex.Message; log.Log(ex); } return(Json(new { success = success, message = message })); }
public JsonResult DeleteParameters(string key) { bool success = false; string message = ""; try { repo.GetPuckMeta().Where(x => x.Name == DBNames.EditorSettings && x.Key == key).ToList().ForEach(x => repo.DeleteMeta(x)); repo.SaveChanges(); success = true; } catch (Exception ex) { success = false; message = ex.Message; log.Log(ex); } return(Json(new { success = success, message = message })); }
public async Task <ActionResult> ForgotPassword(ForgottenPassword model) { if (ModelState.IsValid) { var user = await userManager.FindByEmailAsync(model.Email); if (user == null) { //ModelState.AddModelError("", "Email doesn't exist"); ViewBag.SuccessMessage = $"An email will be sent to the specified address with instructions on how to reset your password, if the address matches our records"; return(View(model)); } var token = Guid.NewGuid().ToString(); var meta = new PuckMeta { Name = DBNames.PasswordResetToken , Key = token , Value = model.Email }; repo.AddMeta(meta); repo.SaveChanges(); var uri = HttpContext.Request.GetUri() ?? PuckCache.FirstRequestUrl; var resetUrl = uri.Scheme + "://" + uri.Host + (uri.Port != 80 ? (":" + uri.Port) : "") + $"/puck/admin/resetpassword?token={token}"; puck.core.Helpers.ApiHelper.Email( model.Email , "Reset your password - Puck CMS" , $"click <a href=\"{resetUrl}\">here</a> to reset your password." ); ViewBag.SuccessMessage = $"An email will be sent to the specified address with instructions on how to reset your password, if the address matches our records"; return(View(model)); } return(View(model)); }
public async Task <ActionResult> EditAttribute(int pid, int aid, string optionType, IFormCollection fc) { var success = false; var message = string.Empty; var _id = -1; try { if (aid < 1) { var prop = repo.GetGeneratedProperty().Where(x => x.ID == pid).FirstOrDefault(); var att = new GeneratedAttribute { Type = optionType }; var model = ApiHelper.CreateInstance(ApiHelper.GetType(optionType)); await TryUpdateModelAsync(model, model.GetType(), ""); var value = JsonConvert.SerializeObject(model); att.Value = value; prop.Attributes.Add(att); repo.SaveChanges(); _id = att.ID; } else { var att = repo.GetGeneratedAttribute().Where(x => x.ID == aid).FirstOrDefault(); var model = ApiHelper.CreateInstance(ApiHelper.GetType(optionType)); await TryUpdateModelAsync(model, model.GetType(), ""); var value = JsonConvert.SerializeObject(model); att.Value = value; repo.SaveChanges(); _id = att.ID; } } catch (Exception ex) { message = ex.Message; } return(Json(new { success = true, message = message, id = _id })); }
public async Task <IActionResult> Create(PuckWorkflowItem model) { var success = false; var message = ""; PuckWorkflowItem wfi = null; bool lockTaken = false; try { if (model != null) { model.AddedBy = User.Identity.Name; } if (ModelState.ContainsKey("AddedBy")) { ModelState["AddedBy"].Errors.Clear(); ModelState["AddedBy"].ValidationState = Microsoft.AspNetCore.Mvc.ModelBinding.ModelValidationState.Valid; } if (!ModelState.IsValid) { message = string.Join(",", ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage)); return(Json(new { success = success, message = message })); } //await slock1.WaitAsync(); lockTaken = true; var existingItems = repo.GetPuckWorkflowItem().Where(x => x.ContentId == model.ContentId && x.Variant == model.Variant && !x.Complete).ToList(); existingItems.ForEach(x => { x.Complete = true; x.CompleteDate = DateTime.Now; }); repo.AddPuckWorkflowItem(model); repo.SaveChanges(); wfi = model; success = true; } catch (Exception ex) { message = ex.Message; log.Log(ex); } finally { //if(lockTaken) // slock1.Release(); } return(Json(new { success = success, message = message, workflowItem = wfi })); }