public dynamic addOrgIndivPos([FromBody] dynamic OrgIndivPos) { ReviveCommunicationsDBEntities3 db = new ReviveCommunicationsDBEntities3(); db.Configuration.ProxyCreationEnabled = false; DbContextTransaction transaction = db.Database.BeginTransaction(); //If no data is received return error dynamic toReturn = new ExpandoObject(); if (OrgIndivPos == null) { toReturn.Error = "Cant be null"; return(toReturn); } try { Organisational_Individual_Position o = new Organisational_Individual_Position(); o.Decription = OrgIndivPos.form.Description; foreach (var goal in OrgIndivPos.form.Goal_Access) { int Goalid = goal.GoalAccessID; Goal_Access Igoal = db.Goal_Access.Where(x => x.GoalAccessID == Goalid).FirstOrDefault(); o.Goal_Access.Add(Igoal); } foreach (var uc in OrgIndivPos.form.Use_Cases) { int UCid = uc.UCID; Use_Cases Iuc = db.Use_Cases.Where(x => x.UCID == UCid).FirstOrDefault(); o.Use_Cases.Add(Iuc); } db.Organisational_Individual_Position.Add(o); db.SaveChanges(); int id = db.Organisational_Individual_Position.OrderByDescending(x => x.OrgIndivPosID).Select(x => x.OrgIndivPosID).FirstOrDefault(); Audit_Trail auditLog = new Audit_Trail(); auditLog.PersonID = OrgIndivPos.PersonID; auditLog.EventDescription = "Added Organisational Individual Position with ID:" + id; auditLog.EventDateTime = DateTime.Now; db.Audit_Trail.Add(auditLog); db.SaveChanges(); //save changes transaction.Commit(); return(getAllOrgIndivPos()); } catch (Exception e) { transaction.Rollback(); //if any errors occur return error message toReturn.Error = e.Message + e.InnerException; return(toReturn); } }
public dynamic updateOrgIndivPos([FromBody] dynamic currentOrgIndivPos) { ReviveCommunicationsDBEntities3 db = new ReviveCommunicationsDBEntities3(); db.Configuration.ProxyCreationEnabled = false; try { int id = currentOrgIndivPos.form.OrgIndivPosID; //retrieve existing object Organisational_Individual_Position thisOrgIndivPos = db.Organisational_Individual_Position.Include("Use_Cases").Include("Goal_Access").Where(i => i.OrgIndivPosID == id).FirstOrDefault(); //remove current Usecase and Goal access foreach (Goal_Access goal in thisOrgIndivPos.Goal_Access.ToList()) { thisOrgIndivPos.Goal_Access.Remove(goal); } foreach (Use_Cases uc in thisOrgIndivPos.Use_Cases.ToList()) { thisOrgIndivPos.Use_Cases.Remove(uc); } //assign new access foreach (var goal in currentOrgIndivPos.form.Goal_Access) { int Goalid = goal.GoalAccessID; Goal_Access Igoal = db.Goal_Access.Where(x => x.GoalAccessID == Goalid).FirstOrDefault(); thisOrgIndivPos.Goal_Access.Add(Igoal); } foreach (var uc in currentOrgIndivPos.form.Use_Cases) { int UCid = uc.UCID; Use_Cases Iuc = db.Use_Cases.Where(x => x.UCID == UCid).FirstOrDefault(); thisOrgIndivPos.Use_Cases.Add(Iuc); } Audit_Trail auditLog = new Audit_Trail(); auditLog.PersonID = currentOrgIndivPos.PersonID; auditLog.EventDescription = "Updated an Organisational Individual Positions Access levels with ID: " + id; auditLog.EventDateTime = DateTime.Now; db.Audit_Trail.Add(auditLog); db.SaveChanges(); //save return(getAllOrgIndivPos()); //retrieve all } catch (Exception e) { //else return error dynamic toReturn = new ExpandoObject(); toReturn.Error = e.Message + e.InnerException; return(toReturn); } }