Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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 }));
        }