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