Esempio n. 1
0
        public async Task <IHttpActionResult> DisableShqUser(string email)
        {
            ShqUser shqUser = await db.ShqUsers.FirstOrDefaultAsync(item => item.EmailAddress == email);

            if (shqUser == null)
            {
                return(NotFound());
            }

            shqUser.Status           = ShqConstants.UserStatusDisable;
            shqUser.LastModifiedById = db.ShqUsers.Where(u => u.IdentityUser.UserName == System.Web.HttpContext.Current.User.Identity.Name).FirstOrDefault().IdentityUserId;
            shqUser.LastModfiedTime  = DateTime.Now;
            //db.ShqUsers.Remove(shqUser);
            await db.SaveChangesAsync();

            return(Ok(new ShqUserRespondViewModel(shqUser, db)));
        }
Esempio n. 2
0
        public async Task <IHttpActionResult> Update(ShqUserRequestViewModel shqUserView)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Not a valid model"));
            }

            if (HttpContext.Current.User.Identity.Name != shqUserView.EmailAddress &&
                HttpContext.Current.User.IsInRole(ShqConstants.AdministratorRole) == false)
            {
                throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "No Access"));
            }

            ShqUser shqUser = await db.ShqUsers.Where(item => item.IdentityUser.Email == shqUserView.EmailAddress).Include("IdentityUser").FirstOrDefaultAsync();

            if (shqUser == null)
            {
                return(NotFound());
            }
            else
            {
                shqUser.Address     = shqUserView.Address;
                shqUser.Description = shqUserView.Description;
                //shqUser.EmailAddress = shqUserView.EmailAddress;
                shqUser.Status                   = shqUserView.Status;
                shqUser.PhoneNumber              = shqUserView.PhoneNumber;
                shqUser.RealName                 = shqUserView.RealName;
                shqUser.Gender                   = shqUserView.Gender;
                shqUser.JobLevel                 = shqUserView.JobLevel;
                shqUser.Department               = shqUserView.Department;
                shqUser.IdentityUser.Email       = shqUserView.EmailAddress;
                shqUser.IdentityUser.PhoneNumber = shqUserView.PhoneNumber;

                shqUser.LastModifiedById = db.ShqUsers.Where(u => u.IdentityUser.UserName == System.Web.HttpContext.Current.User.Identity.Name).FirstOrDefault().IdentityUserId;
                shqUser.LastModfiedTime  = DateTime.Now;
                //var store = new ShqUserStore();
                //await store.SetPasswordHashAsync(shqUser.IdentityUser, new ShqUserManager().PasswordHasher.HashPassword(shqUserView.Password));

                await db.SaveChangesAsync();
            }

            (new AuditsController()).AddAuditEntry("api/ShqUsers/Update", shqUser.EmailAddress);
            return(Ok(new ShqUserRespondViewModel(shqUser, db)));
        }
        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());
            }
        }
Esempio n. 5
0
        public ShqUserRequestViewModel(ShqUser shqUser, ShqContext db)
        {
            if (shqUser == null)
            {
                return;
            }

            Status = shqUser.Status;
            //LoginName = shqUser.IdentityUser.UserName;
            RealName             = shqUser.RealName;
            Description          = shqUser.Description;
            EmailAddress         = shqUser.EmailAddress;
            PhoneNumber          = shqUser.PhoneNumber;
            Address              = shqUser.Address;
            Gender               = shqUser.Gender;
            JobLevel             = shqUser.JobLevel;
            Department           = shqUser.Department;
            shqUser.IdentityUser = db.Users.Find(shqUser.IdentityUserId);
            foreach (var r in shqUser.IdentityUser.Roles)
            {
                Roles.Add(db.Roles.Find(r.RoleId).Name);
            }
        }
        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());
            }
        }
Esempio n. 8
0
        public ShqUser CreateUser(ShqContext context, string userName, string email, string password, string role, ShqUser CreatedBy)
        {
            var user = context.Users.Add(new IdentityUser(userName)
            {
                Email = email, EmailConfirmed = true
            });

            user.Roles.Add(new IdentityUserRole {
                RoleId = role
            });

            var shqUser = new ShqUser()
            {
                IdentityUserId = user.Id, IdentityUser = user, RealName = userName, CreatedTime = DateTime.Now, Status = ShqConstants.UserStatusAvailable, EmailAddress = email
            };

            shqUser.CreatedById = CreatedBy == null ? shqUser.IdentityUserId : CreatedBy.IdentityUserId;
            context.ShqUsers.Add(shqUser);

            context.SaveChanges();

            var store = new ShqUserStore();

            store.SetPasswordHashAsync(user, new ShqUserManager().PasswordHasher.HashPassword(password));

            return(shqUser);
        }