public async Task <JsonResult> SaveForm([FromBody] TempFormModel tfm) { var message = "Evaluation Saved"; if (tfm != null && !tfm.NeedsUpdate) { return(Json(new { Success = true, Message = "No Changes" })); } var result = await UpsertForm(tfm); if (result == -1) { return(Json(new { Success = false, Message = "Could not Save Form" })); } if (tfm.Status) { RedirectToAction("Index", "Admin"); } return(Json(new { Success = true, Message = message, Id = tfm.TempId })); }
public JsonResult UpsertForm([FromBody] TempFormModel tfm) { using (var dbContext = new SarahIncContext()) { var curForm = (from f in dbContext.Form where f.TempId == tfm.TempId select f).FirstOrDefault(); if (curForm == null) { return(Json(false)); } var fm = new FormModel(_mapper); _mapper.Map(tfm, fm); _mapper.Map(fm, curForm); dbContext.SaveChanges(); return(Json(true)); } }
public JsonResult GetFormsBase() { var dbUserId = HttpContext.Session.GetInt32("UserId"); var modelForms = new List <TempFormModel>(); using (var dbContext = new SarahIncContext()) { var forms = (from f in dbContext.Form orderby f.CreatedOn descending select f); if (forms.Any()) { var formsList = forms.ToList(); foreach (var form in formsList) { var timeDiff = DateTime.Now - form.LastSaved.Value; var b = DateTime.Now; var c = form.LastSaved.Value; if (form.Status || timeDiff.TotalMinutes < 3) { if (timeDiff.TotalMinutes < 3 && dbUserId != form.LastUserId) { continue; } } var user = (from u in dbContext.User where u.UserId == form.LastUserId select u).First(); if (timeDiff.TotalDays > 14 && !form.Status) { SendEmail(user.Email, "Form overdue", "It has been over two weeks since you last accessed a form regarding " + form.Firstname + " " + form.Lastname + ". Please finish it at your convenience."); form.LastSaved = DateTime.Now; dbContext.SaveChanges(); } var mf = new TempFormModel { TempId = form.TempId, MagicNo = form.MagicNo, Firstname = form.Firstname, Lastname = form.Lastname, Dob = form.Dob, EvalDate = form.EvalDate, Status = form.Status, LastSaved = form.LastSaved, LastUserId = form.LastUserId, LastUser = user.Firstname + " " + user.Lastname, CreatedOn = form.CreatedOn, ReportReady = form.ReportReady, ReportPrinted = form.ReportPrinted }; modelForms.Add(mf); } } } return(Json(modelForms)); }
public async Task <int> UpsertForm([FromBody] TempFormModel tfm = null) { Form formData; var dbUserId = HttpContext.Session.GetInt32("UserId"); if (dbUserId != null) { try { var dbUserIdInt = Convert.ToInt32(dbUserId); using (var sarahDb = new SarahIncContext()) { if (tfm != null) { formData = await(from t in sarahDb.Form where t.TempId == tfm.TempId select t).FirstOrDefaultAsync(); if (formData == null) { return(-1); } var fm = new FormModel(_mapper); _mapper.Map(tfm, fm); _mapper.Map(fm, formData); formData.LastSaved = DateTime.Now; formData.LastUserId = dbUserIdInt; foreach (var formVar in tfm.FormVariableModels) { var fv = await(from f in sarahDb.FormVariable where f.Name == formVar.Name && f.FormId == formData.TempId select f).FirstAsync(); fv.Value = formVar.Value; if (fv.Name == "frmEvalList" && fv.Value != "[Evaluators]") { var evalList = formVar.Value.Split("<span id=\"ev").ToList(); if (evalList.Count > 0) { foreach (var evalListItem in evalList) { var num = evalListItem.IndexOf('"'); if (num != -1) { var numId = Convert.ToInt32(evalListItem.Substring(0, num)); var userExists = await sarahDb.FormUser.FirstOrDefaultAsync(x => x.UserId == numId && x.TempEvalFormId == formData.TempId); if (userExists == null) { var fu = new FormUser(); fu.TempEvalFormId = formData.TempId; var userInFormUsers = await sarahDb.User.FirstAsync(x => x.UserId == numId); fu.UserId = userInFormUsers.UserId; sarahDb.FormUser.Add(fu); } } } } } } foreach (var formArea in tfm.FormAreaModels) { var fa = await(from f in sarahDb.FormArea where f.Name == formArea.Name && f.FormId == formData.TempId select f).FirstOrDefaultAsync(); if (fa != null) { fa.Value = formArea.Value; } else { fa = new FormArea(); sarahDb.FormArea.Add(fa); fa.Name = formArea.Name; fa.FormId = formData.TempId; fa.Value = formArea.Value; } } var printVarModel = new PrintVariableModel(_mapper); foreach (var printVar in tfm.PrintVariableModels) { printVarModel = printVar; } var frmPageBreak = sarahDb.PrintVariable.FirstOrDefault(x => x.FormId == formData.TempId); if (frmPageBreak == null) { frmPageBreak = new PrintVariable(); sarahDb.PrintVariable.Add(frmPageBreak); frmPageBreak.FormId = formData.TempId; } frmPageBreak.PageBreaks = printVarModel.PageBreaks; } else { formData = new Form(); sarahDb.Form.Add(formData); formData.CreatedOn = DateTime.Now; formData.LastUserId = dbUserIdInt; formData.LastSaved = DateTime.Now; await sarahDb.SaveChangesAsync(); var rootFormVars = (from f in sarahDb.FormVariable where f.FormId == null select f); if (rootFormVars.Any()) { foreach (var rootFormVar in rootFormVars) { var newFormVar = new FormVariable(); sarahDb.FormVariable.Add(newFormVar); newFormVar.FormId = formData.TempId; newFormVar.Description = rootFormVar.Description; newFormVar.Name = rootFormVar.Name; newFormVar.Value = rootFormVar.Value; } } tfm = new TempFormModel(); tfm.TempId = formData.TempId; } formData.LastUserId = dbUserIdInt; await sarahDb.SaveChangesAsync(); if (formData.FormUser.FirstOrDefault(u => u.UserId == dbUserIdInt) == null && HttpContext.Session.GetString("Role") != Constants.RoleAdminStr) { var fu = new FormUser(); fu.TempEvalFormId = formData.TempId; fu.UserId = dbUserIdInt; sarahDb.FormUser.Add(fu); await sarahDb.SaveChangesAsync(); } } return(tfm.TempId); } catch (Exception ex) { var cat = 7; } } return(-1); }
public async Task <JsonResult> LoadForm([FromQuery] int tempId) { var message = "Form Loaded"; var formData = new TempFormModel(); using (var sarahDb = new SarahIncContext()) { var dbUserId = HttpContext.Session.GetInt32("UserId"); var form = await(from f in sarahDb.Form where f.TempId == tempId select f).AsNoTracking().FirstOrDefaultAsync(); if (form != null) { var timeDiff = DateTime.Now - form.LastSaved.Value; if (form.Status || timeDiff.TotalMinutes < 3) { if (timeDiff.TotalMinutes < 3 && dbUserId != form.LastUserId) { RedirectToAction("Index", "Admin"); } if (form.Status && HttpContext.Session.GetString("Role") != "Admin" && form.FormUser.FirstOrDefault(u => u.UserId == dbUserId) == null) // If you are not Admin and not a form creator, no access { RedirectToAction("Index", "Admin"); } } formData.MagicNo = form.MagicNo; formData.Firstname = form.Firstname; formData.Lastname = form.Lastname; formData.Dob = form.Dob; formData.EvalDate = form.EvalDate; formData.Status = form.Status; formData.FinalForm = form.FinalForm; formData.CreatedOn = form.CreatedOn; var formAreas = (from f in sarahDb.FormArea where f.FormId == tempId select f); if (formAreas.Any()) { var newFaList = new List <FormAreaModel>(); foreach (var formArea in formAreas) { var newFa = new FormAreaModel(_mapper); newFa.FormAreaId = formArea.FormAreaId; newFa.FormId = tempId; newFa.Name = formArea.Name; newFa.Value = formArea.Value; newFaList.Add(newFa); } formData.FormAreaModels = newFaList; } var formVarData = (from f in sarahDb.FormVariable where (f.FormId == tempId) select f); if (formVarData.Any()) { var newFrmVarList = new List <FormVariableModel>(); foreach (var tempVar in formVarData) { var newFrmVar = new FormVariableModel(_mapper); newFrmVar.Id = tempVar.FormDataId; newFrmVar.FormId = tempVar.FormId; newFrmVar.Description = tempVar.Description; newFrmVar.Name = tempVar.Name; newFrmVar.Value = tempVar.Value; newFrmVarList.Add(newFrmVar); } formData.FormVariableModels = newFrmVarList; } var formPrintOptions = (from f in sarahDb.PrintVariable where (f.FormId == tempId) select f).FirstOrDefault(); if (formPrintOptions != null) { var list = new List <PrintVariableModel>(); var pvm = new PrintVariableModel(_mapper); _mapper.Map(formPrintOptions, pvm); list.Add(pvm); formData.PrintVariableModels = list; } else { formData.PrintVariableModels = new List <PrintVariableModel>(); } if (!form.Status) { var tv = sarahDb.TemplateVariable.Where(w => w.UserId == null); var tvm = new List <TemplateVariableModel>(); _mapper.Map(tv, tvm); formData.TemplateVariableModels = tvm; } } else { message = "Could not Find Form"; } } return(Json(new { Success = true, Message = message, FormData = formData })); }