public IHttpActionResult WaitForQC(int processID, string userName)
        {
            try
            {
                using (PowerAppsCMSEntities db = new PowerAppsCMSEntities())
                {
                    DateTime now = DateTime.Now;

                    Process selectedProcess = db.Processes.Where(x => x.ID == processID).SingleOrDefault();
                    selectedProcess.Status         = (int)ProcessStatus.WaitForQC;
                    selectedProcess.LastModified   = now;
                    selectedProcess.LastModifiedBy = userName;

                    if (db.SaveChanges() > 0)
                    {
                        ProcessStatusLogs processStatusLogs = new ProcessStatusLogs();
                        processStatusLogs.ProcessID   = processID;
                        processStatusLogs.Description = "Wait for QC";
                        processStatusLogs.Status      = (int)ProcessStatus.WaitForQC;
                        processStatusLogs.StatusName  = "Wait for QC";
                        processStatusLogs.CreatedBy   = userName;
                        processStatusLogs.Created     = now;
                        db.ProcessStatusLogs.Add(processStatusLogs);
                        db.SaveChanges();
                    }
                    return(Ok(HttpStatusCode.OK));
                }
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
        public IHttpActionResult ForceStop(int processAssignID, string userName, string userID)
        {
            using (PowerAppsCMSEntities db = new PowerAppsCMSEntities())
            {
                Guid     guidUserID  = Guid.Parse(userID.Replace(" ", string.Empty));
                DateTime now         = DateTime.Now;
                decimal  actualHours = 0;

                ProcessActivity workinLog = db.ProcessActivities.Where(x => x.ProcessAssignID == processAssignID && x.ProcessAssign.UserID == guidUserID).OrderByDescending(x => x.ID).FirstOrDefault();
                if (workinLog != null && workinLog.Status == 1)
                {
                    actualHours = Convert.ToDecimal(now.Subtract(workinLog.ActivityDateTime).TotalSeconds);
                }

                ProcessActivity processActivity = new ProcessActivity();
                processActivity.Status      = (int)ProcessActivityStatus.Stop;
                processActivity.CreatedBy   = processActivity.LastModifiedBy = userName;
                processActivity.Created     = processActivity.LastModified = processActivity.ActivityDateTime = now;
                processActivity.ActualHours = actualHours;

                ProcessAssign processAssign = db.ProcessAssigns.Where(x => x.ID == processAssignID).FirstOrDefault();
                processAssign.Status         = (int)ProcessAssignStatus.Stop;
                processAssign.LastModified   = now;
                processAssign.LastModifiedBy = userName;
                processAssign.ProcessActivities.Add(processActivity);

                if (db.SaveChanges() > 0)
                {
                    Process selectedProcess = db.Processes.Where(x => x.ID == processAssign.ProcessID).SingleOrDefault();
                    if (selectedProcess.ProcessAssigns.Where(x => x.Status != (int)ProcessAssignStatus.Stop).Count() == 0)
                    {
                        selectedProcess.Status         = (int)ProcessStatus.StopByOperator;
                        selectedProcess.LastModifiedBy = userName;
                        selectedProcess.LastModified   = now;
                    }

                    User user = db.Users.Find(processAssign.UserID);
                    user.IsAssign = false;

                    if (db.SaveChanges() > 0)
                    {
                        ProcessStatusLogs processStatusLogs = new ProcessStatusLogs();
                        processStatusLogs.ProcessID   = processAssign.ProcessID;
                        processStatusLogs.Description = "Force Stop";
                        processStatusLogs.Status      = (int)ProcessStatus.StopByOperator;
                        processStatusLogs.StatusName  = "Stop by Operator";
                        processStatusLogs.CreatedBy   = userName;
                        processStatusLogs.Created     = now;
                        db.ProcessStatusLogs.Add(processStatusLogs);
                        db.SaveChanges();
                    }
                }
                return(Ok(HttpStatusCode.OK));
            }
        }
        public IHttpActionResult StartByOperator(int processID, int processAssignID, string userName)
        {
            using (PowerAppsCMSEntities db = new PowerAppsCMSEntities())
            {
                DateTime now = DateTime.Now;

                ProcessActivity processActivity = new ProcessActivity();
                processActivity.ProcessAssignID = processAssignID;
                processActivity.Status          = (int)ProcessActivityStatus.Start;
                processActivity.Created         = processActivity.LastModified = processActivity.ActivityDateTime = now;
                processActivity.CreatedBy       = processActivity.LastModifiedBy = userName;

                ProcessAssign processAssign = db.ProcessAssigns.Where(x => x.ID == processAssignID).FirstOrDefault();
                processAssign.Status         = (int)ProcessAssignStatus.Start;
                processAssign.LastModified   = now;
                processAssign.LastModifiedBy = userName;
                processAssign.ProcessActivities.Add(processActivity);
                if (db.SaveChanges() > 0)
                {
                    Process selectedProcess = db.Processes.Where(x => x.ID == processID).SingleOrDefault();
                    if (selectedProcess.ActualStartDate == null)
                    {
                        selectedProcess.ActualStartDate = now;
                    }

                    if (selectedProcess.Status != (int)ProcessStatus.OnProcess)
                    {
                        selectedProcess.Status         = (int)ProcessStatus.OnProcess;
                        selectedProcess.LastModified   = now;
                        selectedProcess.LastModifiedBy = userName;
                    }
                    else if (selectedProcess.Status == (int)ProcessStatus.OnProcess)
                    {
                        selectedProcess.LastModified   = now;
                        selectedProcess.LastModifiedBy = userName;
                    }

                    if (db.SaveChanges() > 0)
                    {
                        ProcessStatusLogs processStatusLogs = new ProcessStatusLogs();
                        processStatusLogs.ProcessID   = processID;
                        processStatusLogs.Description = "On Process";
                        processStatusLogs.Status      = (int)ProcessStatus.OnProcess;
                        processStatusLogs.StatusName  = "On Process";
                        processStatusLogs.CreatedBy   = userName;
                        processStatusLogs.Created     = now;
                        db.ProcessStatusLogs.Add(processStatusLogs);
                        db.SaveChanges();
                    }
                }
                return(Ok(HttpStatusCode.OK));
            }
        }
Beispiel #4
0
        public IHttpActionResult QCCheck(int productID, int unitID, int processID, string userName)
        {
            using (PowerAppsCMSEntities db = new PowerAppsCMSEntities())
            {
                DateTime now = DateTime.Now;

                //Update Status dan ActualEndDate process
                Process selectedProcess = db.Processes.Where(x => x.ID == processID).SingleOrDefault();
                selectedProcess.Status = (int)ProcessStatus.QCPassed;
                if (selectedProcess.MasterProcess.ProcessGroupID == 3)
                {
                    selectedProcess.ActualStartDate = selectedProcess.ActualEndDate = selectedProcess.LastModified = now;
                }
                selectedProcess.ActualEndDate  = selectedProcess.LastModified = now;
                selectedProcess.LastModifiedBy = userName;
                db.SaveChanges();

                List <Process> selectedProcesslist = db.Processes.Where(x => x.MasterProcess.ProductID == productID && x.UnitID == unitID).ToList();
                if (selectedProcesslist.Where(x => x.Status != (int)ProcessStatus.QCPassed).Count() == 0)
                {
                    //Update ActualDeliveryDate unit
                    Unit selectedUnit = db.Units.Where(x => x.ID == unitID).SingleOrDefault();
                    selectedUnit.ActualDeliveryDate = selectedUnit.LastModified = now;
                    selectedUnit.LastModifiedBy     = userName;

                    if (db.SaveChanges() > 0)
                    {
                        foreach (Process item in selectedProcesslist)
                        {
                            //Update Status process menjadi finish ketika semua process sudah QC Pass
                            item.Status         = (int)ProcessStatus.Finish;
                            item.LastModified   = now;
                            item.LastModifiedBy = userName;
                            if (db.SaveChanges() > 0)
                            {
                                ProcessStatusLogs processStatusLogs = new ProcessStatusLogs();
                                processStatusLogs.ProcessID   = processID;
                                processStatusLogs.Description = "Finish";
                                processStatusLogs.Status      = (int)ProcessStatus.Finish;
                                processStatusLogs.StatusName  = "Finish";
                                processStatusLogs.CreatedBy   = userName;
                                processStatusLogs.Created     = now;
                                db.ProcessStatusLogs.Add(processStatusLogs);
                                db.SaveChanges();
                            }
                        }
                    }
                }
                return(Ok(HttpStatusCode.OK));
            }
        }