コード例 #1
0
ファイル: DaGen.cs プロジェクト: klejdi1908/SarahIncV2
        public async Task <bool> DeleteRecord <TU>(int id, int secondId = 0) where TU : class
        {
            try
            {
                using (var db = new SarahIncContext())
                {
                    TU record;

                    if (secondId == 0)
                    {
                        record = await db.Set <TU>().FindAsync(id);
                    }
                    else
                    {
                        record = await db.Set <TU>().FindAsync(id, secondId);
                    }

                    db.Set <TU>().Remove(record);
                    await db.SaveChangesAsync();

                    return(true);
                }
            }
            catch (Exception ex)
            {
                Logging.LogError(ex.Message, MethodBase.GetCurrentMethod().ToString(), typeof(TU) + " " + id);
            }

            return(false);
        }
コード例 #2
0
ファイル: DaGen.cs プロジェクト: klejdi1908/SarahIncV2
        public async Task <bool> DeleteRecords <TU>(List <Tuple <int, int?> > records) where TU : class
        {
            try
            {
                using (var db = new SarahIncContext())
                {
                    var idCount = records.Count;

                    for (var x = 0; x < idCount; ++x)
                    {
                        TU record;

                        if (records[x].Item2 == null)
                        {
                            record = await db.Set <TU>().FindAsync(records[x].Item1);
                        }
                        else
                        {
                            record = await db.Set <TU>().FindAsync(records[x].Item1, records[x].Item2);
                        }

                        if (record != null)
                        {
                            db.Set <TU>().Remove(record);
                        }
                    }

                    await db.SaveChangesAsync();

                    return(true);
                }
            }
            catch (Exception ex)
            {
                Logging.LogError(ex.Message, MethodBase.GetCurrentMethod().ToString(), typeof(TU) + " " + string.Join(",", records));
            }

            return(false);
        }
コード例 #3
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);
        }
コード例 #4
0
ファイル: DaGen.cs プロジェクト: klejdi1908/SarahIncV2
        public async Task <List <Tuple <int, int?> > > UpsertRecords <TU, TV>(List <TU> recordModels, List <int> pks, List <int> pkSeconds = null) where TV : class, new()  // TU is the model, TV is the dbSet type
        {
            var resultList       = new List <Tuple <int, int?> >();
            var currentRecordIdx = 0;

            try
            {
                using (var db = new SarahIncContext())
                {
                    var modelCount   = recordModels.Count;
                    var pkCount      = pks.Count;
                    var totalRecords = new List <TV>();
                    var noRecords    = false;

                    if (modelCount != pkCount)
                    {
                        return(resultList);
                    }

                    for (var x = 0; x < modelCount; ++x)
                    {
                        currentRecordIdx = x;
                        var currentRecord = new TV();

                        if (pks[x] != 0)
                        {
                            if (pkSeconds == null)
                            {
                                currentRecord = await db.Set <TV>().FindAsync(pks[x]);
                            }
                            else
                            {
                                currentRecord = await db.Set <TV>().FindAsync(pks[x], pkSeconds[x]);
                            }

                            if (currentRecord == null)
                            {
                                currentRecord = new TV();
                                noRecords     = true;
                            }
                        }

                        if (pks[x] == 0 || (pkSeconds != null && pkSeconds[x] == 0) || noRecords)
                        {
                            db.Set <TV>().Add(currentRecord);
                        }

                        _mapper.Map(recordModels[x], currentRecord);
                        totalRecords.Add(currentRecord);
                    }

                    await db.SaveChangesAsync();

                    for (var x = 0; x < modelCount; ++x)
                    {
                        resultList.Add(GetPrimaryKeys(totalRecords[x]));
                    }

                    return(resultList);
                }
            }
            catch (Exception ex)
            {
                Logging.LogError(ex.Message, MethodBase.GetCurrentMethod().ToString(), typeof(TU) + " " + GetObjectProperties(recordModels[currentRecordIdx]));
            }

            return(resultList);
        }