public async Task <IHttpActionResult> AddFMEAProjectTree(FTATreeRequestViewModel tree) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var docs = db.FMEAProjects.Include("Project").Where(item => item.ProjectId == tree.ProjectId).FirstOrDefault(); if (docs == null) { return(NotFound()); } if (ProjectHelper.HasUpdateAccess(docs.Project) == false) { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "No Access")); } ShqUser shqUser = await db.ShqUsers.Where(item => item.IdentityUser.UserName == HttpContext.Current.User.Identity.Name).Include("IdentityUser").FirstOrDefaultAsync(); var tr = docs.FMEATrees.Where(item => item.Id == tree.Id).FirstOrDefault(); if (tr == null) { FMEATree FMEATree = new FMEATree() { Id = tree.Id, FMEAProjectId = docs.Id, FMEAProject = docs, Content = tree.Content, CreatedById = shqUser.IdentityUserId, CreatedTime = DateTime.Now, LastModifiedById = shqUser.IdentityUserId, LastModfiedTime = DateTime.Now }; docs.FMEATrees.Add(FMEATree); await db.SaveChangesAsync(); return(Ok(new FTATreeRequestViewModel() { Id = FMEATree.Id, Content = FMEATree.Content, ProjectId = docs.ProjectId })); } else { return(Conflict()); } }
public async Task <IHttpActionResult> AddFTAProjectTree(FTATreeRequestViewModel tree) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var docs = db.FTAProjects.Include("Project").Where(item => item.ProjectId == tree.ProjectId).FirstOrDefault(); if (docs == null) { return(NotFound()); } if (ProjectHelper.HasUpdateAccess(docs.Project) == false) { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "No Access")); } ShqUser shqUser = await db.ShqUsers.Where(item => item.IdentityUser.UserName == HttpContext.Current.User.Identity.Name).Include("IdentityUser").FirstOrDefaultAsync(); var tr = docs.FTATrees.Where(item => item.Id == tree.Id).FirstOrDefault(); if (tr == null) { FTATree ftaTree = new FTATree() { Id = tree.Id, FTAProjectId = docs.Id, FTAProject = docs, AnalysisStatus = 0, Content = tree.Content, CreatedById = shqUser.IdentityUserId, CreatedTime = DateTime.Now, LastModifiedById = shqUser.IdentityUserId, LastModfiedTime = DateTime.Now }; docs.FTATrees.Add(ftaTree); await db.SaveChangesAsync(); (new AuditsController()).AddAuditEntry("api/FTAProjects/AddTree", JsonConvert.SerializeObject(new ProjectViewModel(docs.Project, db))); return(Ok(new FTATreeViewModel(ftaTree, db))); } else { return(Conflict()); } }
public async Task <IHttpActionResult> AddFMEAProjectTree(FTATreeRequestViewModel tree) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var docs = db.FMEAProjects.Include("Project").Where(item => item.ProjectId == tree.ProjectId).FirstOrDefault(); if (docs == null) { return(NotFound()); } if (ProjectHelper.HasUpdateAccess(docs.Project) == false) { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "No Access")); } ShqUser shqUser = await db.ShqUsers.Where(item => item.IdentityUser.UserName == HttpContext.Current.User.Identity.Name).Include("IdentityUser").FirstOrDefaultAsync(); var tr = docs.FMEATrees.Where(item => item.Id == tree.Id).FirstOrDefault(); if (tr == null) { FMEATree FMEATree = new FMEATree() { Id = tree.Id, FMEAProjectId = docs.Id, FMEAProject = docs, Content = tree.Content, CreatedById = shqUser.IdentityUserId, CreatedTime = DateTime.Now, LastModifiedById = shqUser.IdentityUserId, LastModfiedTime = DateTime.Now }; docs.FMEATrees.Add(FMEATree); await db.SaveChangesAsync(); dynamic jsonSource = JObject.Parse(FMEATree.Content); foreach (var structureNode in jsonSource.structureNodes) { foreach (var function in structureNode.FunctionSet) { foreach (var failure in function.FailureSet) { foreach (var property in failure.properties) { string key = property.key; string value = property.value; if (property.previousValue != value) { property.previousValue = value; db.ShqKeywordSets.Add(new ShqKeywordSet { Keyword = string.Format("{0}^{1}^{2}^{3}", structureNode.name, function.name, failure.name, key), KeywordValue = value }); } } } } } FMEATree.Content = JsonConvert.SerializeObject(jsonSource); await db.SaveChangesAsync(); (new AuditsController()).AddAuditEntry("api/FMEAProjects/AddTree", JsonConvert.SerializeObject(new ProjectViewModel(docs.Project, db))); return(Ok(new FTATreeRequestViewModel() { Id = FMEATree.Id, Content = FMEATree.Content, ProjectId = docs.ProjectId })); } else { return(Conflict()); } }
public async Task <IHttpActionResult> AnalyzeFTAProjectTree(FTATreeRequestViewModel tree) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var docs = db.FTAProjects.Include("Project").Where(item => item.ProjectId == tree.ProjectId).FirstOrDefault(); if (docs == null) { return(NotFound()); } if (ProjectHelper.HasUpdateAccess(docs.Project) == false) { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "No Access")); } ShqUser shqUser = await db.ShqUsers.Where(item => item.IdentityUser.UserName == HttpContext.Current.User.Identity.Name).Include("IdentityUser").FirstOrDefaultAsync(); var tr = docs.FTATrees.Where(item => item.Id == tree.Id).FirstOrDefault(); if (tr == null) { FTATree ftaTree = new FTATree() { Id = tree.Id, FTAProjectId = docs.Id, AnalysisStatus = 1, FTAProject = docs, Content = tree.Content, CreatedById = shqUser.IdentityUserId, CreatedTime = DateTime.Now, LastModifiedById = shqUser.IdentityUserId, LastModfiedTime = DateTime.Now }; docs.FTATrees.Add(ftaTree); db.SaveChanges(); var jsonFTATree = JsonConvert.DeserializeObject <JsonFTATree>(tree.Content); dynamic jsonSource = JObject.Parse(tree.Content); Analyze(docs, jsonFTATree); var result = new FTATreeViewModel(ftaTree, db); string exeString = RunPythonAnalysis(docs.Id); if (exeString == null) { result.AnalysisStatus = "Ok"; foreach (var jsNode in jsonSource.nodes) { string jsNodeId = jsNode.id; using (var con = new MySqlConnection(ConfigurationManager.ConnectionStrings["ShqContext"].ConnectionString)) { con.Open(); var cmd = con.CreateCommand(); //var node = db.FTANodes.FirstOrDefault(item => item.FTAProjectId == docs.Id && item.EventId == jsNodeId); //if (node != null) //{ // jsNode.smallFailureRateQ = node.SmallFailureRateQ; //} cmd.CommandText = string.Format("select SmallFailureRateQ,Color from shqdb.ftanodes where FTAProjectId = '{0}' and EventId = '{1}' limit 1;", docs.Id, jsNodeId); using (var rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.CloseConnection)) { while (rdr.Read()) { jsNode.smallFailureRateQ = rdr.GetDouble(0); jsNode.color = rdr.GetString(1); } } } } foreach (var jsProperty in jsonSource.attributes) { string jName = jsProperty.name; //var node = db.FTANodeProperties.FirstOrDefault(item => item.FTAProjectId == docs.Id && item.Name == jName); //if (node != null) //{ // jsProperty.failureRateQ = node.FailureRateQ; // jsProperty.invalidRate = node.InvalidRate; // jsProperty.failureTime = node.FailureTime; // jsProperty.dCrf = node.DCrf; // jsProperty.dClf = node.DClf; //} using (var con = new MySqlConnection(ConfigurationManager.ConnectionStrings["ShqContext"].ConnectionString)) { con.Open(); var cmd = con.CreateCommand(); cmd.CommandText = string.Format("select SmallFailureRateQ,failureRateQ,invalidRate,failureTime,dCrf,dClf from ftanodes as nodes inner join ftanodeproperties as ps on nodes.NodeName = ps.Name where ps.FTAProjectId = '{0}' and ps.Name = '{1}' limit 1;", docs.Id, jName); using (var rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.CloseConnection)) { while (rdr.Read()) { jsProperty.smallFailureRateQ = rdr.GetDouble(0); jsProperty.failureRateQ = rdr.GetDouble(1); jsProperty.invalidRate = rdr.GetDouble(2); jsProperty.failureTime = rdr.GetDouble(3); jsProperty.dCrf = rdr.GetDouble(4); jsProperty.dClf = rdr.GetDouble(5); } } } } result.Content = JsonConvert.SerializeObject(jsonSource); ftaTree.Content = result.Content; db.SaveChanges(); //// remove C:\Users\phimath\Source\Repos\sq_analysis\2.service\packages\MySqlConnector.0.47.1\lib\net45\MySqlConnector.dll //using (var con = new MySqlConnection(ConfigurationManager.ConnectionStrings["ShqContext"].ConnectionString)) //{ // con.Open(); // var cmd = con.CreateCommand(); // cmd.CommandText = "SELECT ftanodes.eventid as nodeid,ftanodeeventreportsreview.FTAEventTypeId,ftanodeeventreportsreview.FTAFailureTypeId, ftanodeeventreportsreview.EventValue,ftanodeeventreportsreview.EventValueType FROM ftanodeeventreportsreview inner join ftanodes on ftanodes.id = ftanodeeventreportsreview.FTANodeId"; // using (var rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.CloseConnection)) // { // result.JsonNodeEvents = new List<JsonNodeEvent>(); // while (rdr.Read()) // { // JsonNodeEvent e = new JsonNodeEvent(); // e.NodeId = rdr.GetString(0); // e.EventId = rdr.GetInt32(1); // e.FalureId = rdr.GetInt32(2); // e.EventValue = rdr.GetDouble(3); // e.EventValueType = rdr.GetInt32(4); // result.JsonNodeEvents.Add(e); // } // } //} //using (var con = new MySqlConnection(ConfigurationManager.ConnectionStrings["ShqContext"].ConnectionString)) //{ // con.Open(); // var cmd = con.CreateCommand(); // cmd.CommandText = string.Format("SELECT FTAEventTypeId,FTAFailureTypeId,FailureRateQ,InvalidRate FROM shqdb.ftaeventreports where ftaprojectid = '{0}'", docs.Id); // using (var rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.CloseConnection)) // { // result.JsonTreeEvents = new List<JsonTreeEvent>(); // while (rdr.Read()) // { // JsonTreeEvent e = new JsonTreeEvent(); // e.EventId = rdr.GetInt32(0); // e.FalureId = rdr.GetInt32(1); // e.FailureRateQ = rdr.GetDouble(2); // e.InvalidRate = rdr.GetInt32(3); // result.JsonTreeEvents.Add(e); // } // } //} } else { result.AnalysisStatus = "Error:" + exeString; } (new AuditsController()).AddAuditEntry("api/FTAProjects/AnalyzeTree", JsonConvert.SerializeObject(new ProjectViewModel(docs.Project, db))); return(Ok(result)); } else { return(Conflict()); } }