예제 #1
0
 public WorkTableModel(WorkTable table)
 {
     this.Id       = table.Id;
     this.Date     = table.Date;
     this.IsActive = table.IsActive;
     this.PersonId = table.PersonId;
 }
예제 #2
0
        private void radGridView1_CommandCellClick(object sender, Telerik.WinControls.UI.GridViewCellEventArgs e)
        {
            var col = radGridView1.CurrentColumn.Index;

            if (col == 7)
            {
                EditWorkFrm frm = new EditWorkFrm();
                WorkTable   tb  = (WorkTable)radGridView1.CurrentRow.DataBoundItem;
                frm.Wtb = tb;
                frm.ShowDialog();
            }

            if (col == 8)
            {
                if (RadMessageBox.Show(this, "هل تريد حذف السجل", "حذف السجلات", MessageBoxButtons.YesNo, RadMessageIcon.Question) == DialogResult.Yes)
                {
                    if (WorkCmd.DeleteWork(((WorkTable)this.radGridView1.CurrentRow.DataBoundItem).Id))
                    {
                    }

                    else
                    {
                        RadMessageBox.Show("لا يمكن حذف السجل", "خطأ", MessageBoxButtons.OK, RadMessageIcon.Error);
                    }
                }
            }
        }
예제 #3
0
        public IEnumerable <WorkTable> GetWorkList()
        {
            List <WorkTable> WorkData = new List <WorkTable>();

            SqlConn();
            SqlCommand cmd = new SqlCommand("Select * From Works", conn);

            conn.Open();
            SqlDataReader rdr = cmd.ExecuteReader();

            while (rdr.Read())
            {
                WorkTable work = new WorkTable();
                work.Id               = Convert.ToInt32(rdr["UserId"]);
                work.Tittle           = rdr["Tittle"].ToString();
                work.Explanation      = rdr["Explanation"].ToString();
                work.Category         = rdr["Category"].ToString();
                work.Hıw              = rdr["Hıw"].ToString();
                work.EducationStatus  = rdr["EducationStatus"].ToString();
                work.Experience       = rdr["Experience"].ToString();
                work.CompanyName      = rdr["CompanyName"].ToString();
                work.Address          = rdr["Address"].ToString();
                work.AddressLongitude = Convert.ToDouble(rdr["AddressLongitude"]);
                work.AddressLatitude  = Convert.ToDouble(rdr["AddressLatitude"]);
                work.CompanyPhone     = rdr["CompanyPhone"].ToString();
                work.InfoEmployer     = rdr["InfoEmployer"].ToString();
                WorkData.Add(work);
            }
            conn.Close();
            return(WorkData);
        }
예제 #4
0
        private void simpleButton2_Click(object sender, EventArgs e)
        {
            if (RadMessageBox.Show(this, "هل تريد حفظ التعديلات", "حفظ", MessageBoxButtons.YesNo, RadMessageIcon.Question) == DialogResult.Yes)
            {
                var ListData = WorkCmd.GetWorkInfo(UserClass.XEmpId, DateTime.Now.Date);

                foreach (var item in ListData)
                {
                    Startime = DateTime.Parse(item.startTime.ToString());
                }

                float compMonth = (DateTime.Now.Minute + DateTime.Now.Hour * 60) - (Startime.Minute + Startime.Hour * 60);
                float Totaltime = compMonth / 60;


                WorkTable tb = new WorkTable()
                {
                    EmpId          = UserClass.XEmpId,
                    WorkDate       = DateTime.Now.Date,
                    startTime      = Startime.TimeOfDay,
                    endtime        = DateTime.Parse(DateTime.Now.ToShortTimeString()).TimeOfDay,
                    RealWorkTimeNo = UserClass.XWorkTime,
                    WorkTime       = Totaltime,
                    DefernceTime   = (Totaltime - UserClass.XWorkTime),
                    WorkFinsh      = "true"
                };
                WorkCmd.EditWorkUser(tb);
                RadMessageBox.Show("تم تسجيل الانصراف", "تمت", MessageBoxButtons.OK, RadMessageIcon.Info);

                Loginfrm myForm = (Loginfrm)Application.OpenForms["Loginfrm"];
                myForm.Show();
                this.Close();
            }
        }
예제 #5
0
        private void AddBtn_Click(object sender, EventArgs e)
        {
            #region "  CheckFillTextBox "

            if (EmpComboBox.Text == "")
            {
                EmpComboBox.MultiColumnComboBoxElement.BackColor = Color.OrangeRed;

                EmpComboBox.Focus();

                return;
            }
            else
            {
                EmpComboBox.MultiColumnComboBoxElement.BackColor = Color.White;
            }
            if (EmpComboBox.SelectedValue == null)
            {
                EmpComboBox.MultiColumnComboBoxElement.BackColor = Color.OrangeRed;

                EmpComboBox.Focus();

                return;
            }
            else
            {
                EmpComboBox.MultiColumnComboBoxElement.BackColor = Color.White;
            }



            #endregion

            var q = WorkCmd.CheckWork(int.Parse(EmpComboBox.SelectedValue.ToString()), radDateTimePicker1.Value.Date);
            if (q != null)
            {
                RadMessageBox.Show("مسجل في هذا التاريخ مسبقاً", "خطأ", MessageBoxButtons.OK, RadMessageIcon.Error);
                return;
            }
            float compMonth = (endtimeTimeEdit.Time.Minute + endtimeTimeEdit.Time.Hour * 60) - (startTimeTimeEdit.Time.Minute + startTimeTimeEdit.Time.Hour * 60);
            float Totaltime = compMonth / 60;
            WorkTime = Totaltime;
            Defernce = WorkTime - WorkHour;

            WorkTable tb = new WorkTable()
            {
                EmpId          = int.Parse(EmpComboBox.SelectedValue.ToString()),
                WorkDate       = radDateTimePicker1.Value.Date,
                startTime      = startTimeTimeEdit.Time.TimeOfDay,
                endtime        = endtimeTimeEdit.Time.TimeOfDay,
                RealWorkTimeNo = WorkHour,
                WorkTime       = WorkTime,
                DefernceTime   = Defernce,
                WorkFinsh      = "true"
            };

            WorkCmd.addWork(tb);
            RadMessageBox.Show("تمت عملية الحفظ", "تمت", MessageBoxButtons.OK, RadMessageIcon.Info);
            EmpComboBox.Focus();
        }
예제 #6
0
        public static bool addWork(WorkTable tb)
        {
            db = new DbDataContext();

            db.WorkTables.InsertOnSubmit(tb);
            db.SubmitChanges();
            return(true);
        }
        private static void Setup()
        {
            _settings = GetSettingsFromConfig();

            var distributedConnectionString = EVE.Site.DAL.Config.GetConnectionString(DataStore.Distributed);

            _distributedDatabase = new DistributedDatabase(distributedConnectionString);
            _workTable           = new WorkTable(distributedConnectionString);
        }
예제 #8
0
        public Response SaveWork(WorkTable work)
        {
            SqlConn();

            Response response = new Response();

            try
            {
                conn.Open();
                string sSQL = "insert into Works (UserId,Tittle,Explanation,Category,Hıw,EducationStatus,Experience,CompanyName,CompanyPhone,Address,AddressLongitude,AddressLatitude,InfoEmployer)values(@UserId,@Tittle,@Explanation,@Category,@Hıw,@EducationStatus,@Experience,@CompanyName,@CompanyPhone,@Address,@AddressLongitude,@AddressLatitude,@InfoEmployer)";
                var    cmd  = new SqlCommand(sSQL, conn);
                cmd.Parameters.AddWithValue("@UserId", work.Id);
                cmd.Parameters.AddWithValue("@Tittle", work.Tittle);
                cmd.Parameters.AddWithValue("@Explanation", work.Explanation);
                cmd.Parameters.AddWithValue("@Category", work.Category);
                cmd.Parameters.AddWithValue("@Hıw", work.Hıw);
                cmd.Parameters.AddWithValue("@EducationStatus", work.EducationStatus);
                cmd.Parameters.AddWithValue("@Experience", work.Experience);
                cmd.Parameters.AddWithValue("@CompanyName", work.CompanyName);
                cmd.Parameters.AddWithValue("@CompanyPhone", work.CompanyPhone);
                cmd.Parameters.AddWithValue("@Address", work.Address);
                cmd.Parameters.AddWithValue("@AddressLongitude", work.AddressLongitude);
                cmd.Parameters.AddWithValue("@AddressLatitude", work.AddressLatitude);
                cmd.Parameters.AddWithValue("@InfoEmployer", work.InfoEmployer);

                int temp = 0;

                temp = cmd.ExecuteNonQuery();
                if (temp > 0)
                {
                    conn.Close();
                    response.Message = "Work Added Successfully.";
                    response.Status  = 1;
                }
                else
                {
                    conn.Close();
                    response.Message = "Works Add Failed.";
                    response.Status  = 0;
                }
            }
            catch (Exception ex)
            {
                conn.Close();
                response.Message = ex.Message;
                response.Status  = 0;
            }
            finally
            {
                conn.Close();
            }
            return(response);
        }
예제 #9
0
        public static WorkTable CheckWork(int usr, DateTime date1)
        {
            db = new DbDataContext();
            try
            {
                WorkTable q = db.WorkTables.Where(p => p.EmpId == usr && p.WorkDate == date1).Single();
                if (q.EmpId == usr && q.WorkDate == date1)
                {
                    return(q);
                }

                return(null);
            }
            catch (Exception)
            {
                return(null);
            }
        }
예제 #10
0
 private void button8_Click(object sender, EventArgs e)
 {
     try
     {
         model5.NUsername = Log.recby;
         using (CCareMSEntities db = new CCareMSEntities())
         {
             model5            = db.WorkTables.Where(x => x.NUsername == model5.NUsername).FirstOrDefault(x => x.FUsername == requF);
             model5.WorkStatus = "Booked";
             db.SaveChanges();
             MessageBox.Show("Congratulation ! you are haired!");
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
         throw;
     }
 }
예제 #11
0
        public static bool EditWorkUser(WorkTable tb)
        {
            db = new DbDataContext();

            var q = db.WorkTables.Where(p => p.EmpId == tb.EmpId && p.WorkDate == tb.WorkDate).SingleOrDefault();

            q.EmpId          = tb.EmpId;
            q.WorkDate       = tb.WorkDate;
            q.startTime      = tb.startTime;
            q.endtime        = tb.endtime;
            q.RealWorkTimeNo = tb.RealWorkTimeNo;
            q.WorkTime       = tb.WorkTime;
            q.DefernceTime   = tb.DefernceTime;
            q.WorkFinsh      = tb.WorkFinsh;


            db.SubmitChanges();
            return(true);
        }
        public static void InitialiseTables()
        {
            var distributedConnectionString = EVE.Site.DAL.Config.GetConnectionString(DataStore.Distributed);

            _workTable = new WorkTable(distributedConnectionString);

            _exhibitDatabaseConnectionString =
                EVE.Site.DAL.Config.GetConnectionString(DataStore.Exhibit)
                .Replace(EVE.Site.DAL.Config.ExhibitPlaceholder, _exhibitId.ToString(CultureInfo.InvariantCulture));
            _fileMetadataTable       = new FileMetadataTable(_exhibitDatabaseConnectionString);
            _entityTable             = new EntityTable(_exhibitDatabaseConnectionString);
            _connectionMetadataTable = new ConnectionMetadataTable(_exhibitDatabaseConnectionString);
            _mediaTable      = new MediaTable(_exhibitDatabaseConnectionString);
            _exhibitDatabase = new ExhibitDatabase(_exhibitDatabaseConnectionString);

            var distributedDbConnctionString = EVE.Site.DAL.Config.GetConnectionString(DataStore.Distributed);

            _distributedDatabase = new DistributedDatabase(distributedDbConnctionString);
        }
 private void dgvnoti_Click(object sender, EventArgs e)
 {
     try {
         if (dgvnoti.CurrentRow.Index != -1)
         {
             FamilyUser      = Convert.ToString(dgvnoti.CurrentRow.Cells["dgvFuser"].Value);
             NannyUser       = Convert.ToString(dgvnoti.CurrentRow.Cells["dgvNanny"].Value);
             model.FUsername = Convert.ToString(dgvnoti.CurrentRow.Cells["dgvFuser"].Value);
             using (CMSEntities db = new CMSEntities())
             {
                 model = db.WorkTables.Where(x => x.FUsername == model.FUsername).FirstOrDefault(x => x.NUsername == NannyUser);
             }
         }
     }
     catch
     {
         MessageBox.Show("Invalid");
     }
 }
예제 #14
0
        private void simpleButton1_Click(object sender, EventArgs e)
        {
            WorkTable tb = new WorkTable()
            {
                EmpId          = UserClass.XEmpId,
                WorkDate       = DateTime.Now.Date,
                startTime      = DateTime.Parse(DateTime.Now.ToShortTimeString()).TimeOfDay,
                endtime        = DateTime.Parse(DateTime.Now.ToShortTimeString()).TimeOfDay,
                RealWorkTimeNo = UserClass.XWorkTime,
                WorkTime       = 0,
                DefernceTime   = (0 - UserClass.XWorkTime)
            };

            WorkCmd.addWork(tb);
            RadMessageBox.Show("تم تسجيل الحضور", "تمت", MessageBoxButtons.OK, RadMessageIcon.Info);

            Loginfrm myForm = (Loginfrm)Application.OpenForms["Loginfrm"];

            myForm.Show();
            this.Close();
        }
예제 #15
0
        /// <summary>
        /// Generate csomor for table
        /// </summary>
        /// <param name="table">Work table</param>
        /// <param name="persons">Person list</param>
        /// <param name="workId">Work Id</param>
        /// <param name="maxHour">Maximum work hour</param>
        /// <param name="counter">Counter against infinite loop</param>
        private void GenerateToDate(ref WorkTable table, ref List <Person> persons, string workId, int maxHour, int counter = 0)
        {
            var person = this.GetValidRandomPerson(persons);

            if (person == null)
            {
                return;
            }

            if (this.WorkerIsValid(person, table.Date, workId, maxHour))
            {
                table.PersonId = person.Id;
                var date   = table.Date;
                var pTable = person.Tables.FirstOrDefault(x => this.CompareDates(date, x.Date));

                if (pTable == null)
                {
                    throw new ArgumentException("Table is missing");
                }

                pTable.WorkId = workId;
                person.Hours--;
            }
            else if (counter < this.GenerateLimit)
            {
                if (counter > 100)
                {
                    // TODO: Worker switch
                    Console.WriteLine("Bigger than 100");
                }
                else
                {
                    this.GenerateToDate(ref table, ref persons, workId, maxHour, counter++);
                }
            }
        }
예제 #16
0
 // Start is called before the first frame update
 void Start()
 {
     workTableScript = ServiceLocator.Get <WorkTable>();
 }
예제 #17
0
        internal void SaveWorkbook()
        {
            try
            {
                using (SaveFileDialog saveDialog = new SaveFileDialog())
                {
                    saveDialog.CreatePrompt     = false;
                    saveDialog.OverwritePrompt  = true;
                    saveDialog.RestoreDirectory = false;
                    saveDialog.InitialDirectory = System.IO.Path.GetDirectoryName(FilenameTextBox.Text);
                    saveDialog.FileName         = System.IO.Path.GetFileNameWithoutExtension(FilenameTextBox.Text);
                    saveDialog.Filter           = Properties.Resources.FILE_SAVEFILE_FILTER;
                    saveDialog.DefaultExt       = Constants.FILE_SAVEFILE_EXTENSION;
                    saveDialog.FilterIndex      = 2;

                    if (saveDialog.ShowDialog() == DialogResult.OK)
                    {
                        System.IO.Stream dtStream;

                        if ((dtStream = saveDialog.OpenFile()) != null)
                        {
                            Cursor.Current = Cursors.WaitCursor;

                            dtStream.Close();
                            if (System.Threading.Tasks.Task.Run(() => { return(ExportDataTableCollection(saveDialog.FileName)); }).Result)
                            {
                                FilenameTextBox.Text = saveDialog.FileName;
                            }

                            Cursor.Current = Cursors.Default;
                        }

                        SaveAsLastFileOpened(saveDialog.FileName);
                    }

                    SetSpreadsheetChanges(false);
                }
            }
            catch (System.IO.IOException ex)
            {
                MessageBox.Show(string.Format(UserHelper.culture, Properties.Resources.NOTIFY_FILESAVE_ERROR, System.IO.Path.GetFileNameWithoutExtension(FilenameTextBox.Text)), Properties.Resources.CAPTION_SAVE_WORKBOOK, MessageBoxButtons.OK, MessageBoxIcon.Error);
                if (log != null)
                {
                    log.Error(string.Format(UserHelper.culture, Properties.Resources.NOTIFY_FILESAVE_ERROR, System.IO.Path.GetFileNameWithoutExtension(FilenameTextBox.Text)), ex);
                }
            }

            bool ExportDataTableCollection(string destination)
            {
                using (System.Data.DataSet ExportDataSet = new System.Data.DataSet())
                {
                    foreach (System.Data.DataTable WorkTable in DataTableCollection)
                    {
                        WorkTable.AcceptChanges();
                        ExportDataSet.Merge(WorkTable);
                    }

                    System.Data.DataTableCollection ExportTableCollection = ExportDataSet.Tables;

                    foreach (System.Data.DataTable ExportTable in ExportTableCollection)
                    {
                        ExportTable.Constraints.Clear();
                        ClassLibraryStandard.DataTableMethods.DeleteColumn(ExportTable, Constants.KEY_COLUMN);
                    }

                    return(CreateExcelFile.CreateExcelFile.ExportExcelDocument(ExportTableCollection, destination));
                }
            }
        }
예제 #18
0
        private void simpleButton1_Click(object sender, EventArgs e)
        {
            #region "  CheckFillTextBox "

            if (EmpComboBox.Text == "")
            {
                EmpComboBox.MultiColumnComboBoxElement.BackColor = Color.OrangeRed;

                EmpComboBox.Focus();

                return;
            }
            else
            {
                EmpComboBox.MultiColumnComboBoxElement.BackColor = Color.White;
            }
            if (EmpComboBox.SelectedValue == null)
            {
                EmpComboBox.MultiColumnComboBoxElement.BackColor = Color.OrangeRed;

                EmpComboBox.Focus();

                return;
            }
            else
            {
                EmpComboBox.MultiColumnComboBoxElement.BackColor = Color.White;
            }

            if (radDropDownList1.Text == "")
            {
                radDropDownList1.BackColor = Color.OrangeRed;

                radDropDownList1.Focus();

                return;
            }
            else
            {
                radDropDownList1.BackColor = Color.White;
            }


            #endregion

            var q = WorkCmd.CheckWork(int.Parse(EmpComboBox.SelectedValue.ToString()), LeaveDateTimePicker.Value.Date);
            if (q != null)
            {
                if (RadMessageBox.Show(this, "هل تريد حفظ التغيرات", "تنبيه", MessageBoxButtons.YesNo, RadMessageIcon.Question) == DialogResult.Yes)
                {
                    LvTb.EmpId     = int.Parse(EmpComboBox.SelectedValue.ToString());
                    LvTb.LeaveDate = LeaveDateTimePicker.Value.Date;
                    LvTb.LeaveTime = leaveTimeTimeEdit.Time.TimeOfDay;
                    LvTb.BackTime  = backTimeTimeEdit.Time.TimeOfDay;
                    LvTb.LeaveType = radDropDownList1.Text;
                    LeaveCmdClass.EditLeave(LvTb);
                }
                if (RadMessageBox.Show(this, "هل يتم اعتماد ساعة العودة  ساعة الانصراف", "تنبيه", MessageBoxButtons.YesNo, RadMessageIcon.Question) == DialogResult.Yes)
                {
                    var ListData = WorkCmd.GetWorkInfo(int.Parse(EmpComboBox.SelectedValue.ToString()), LeaveDateTimePicker.Value.Date);

                    foreach (var item in ListData)
                    {
                        Startime            = DateTime.Parse(item.startTime.ToString());
                        UserClass.XWorkTime = float.Parse(item.RealWorkTimeNo.ToString());
                    }

                    float     compMonth = (backTimeTimeEdit.Time.Minute + backTimeTimeEdit.Time.Hour * 60) - (Startime.Minute + Startime.Hour * 60);
                    float     Totaltime = compMonth / 60;
                    WorkTable tb1       = new WorkTable()
                    {
                        EmpId          = int.Parse(EmpComboBox.SelectedValue.ToString()),
                        WorkDate       = LeaveDateTimePicker.Value.Date,
                        startTime      = Startime.TimeOfDay,
                        endtime        = leaveTimeTimeEdit.Time.TimeOfDay,
                        RealWorkTimeNo = UserClass.XWorkTime,
                        WorkTime       = Totaltime,
                        DefernceTime   = (Totaltime - UserClass.XWorkTime),
                        WorkFinsh      = "true"
                    };
                    WorkCmd.EditWorkUser(tb1);
                    RadMessageBox.Show("تمت الاضافة واعتماد ساعة الانتهاء من الدوام", "تمت", MessageBoxButtons.OK, RadMessageIcon.Info);
                }

                RadMessageBox.Show("تمت الاضافة بدون اعتماد ساعةالانتهاء من الدوام", "تمت", MessageBoxButtons.OK, RadMessageIcon.Info);
            }
            else
            {
                RadMessageBox.Show("يرجى اولا تسجيل الحضور", "خطأ", MessageBoxButtons.OK, RadMessageIcon.Error);
                return;
            }
        }
예제 #19
0
        /// <summary>
        /// Todo tray change
        /// </summary>
        /// <returns></returns>
        public async Task <WaitBlock> WorkAsync()
        {
            return(await Task.Run(async() =>
            {
                string log = string.Empty;
                try
                {
                    //Task<WaitBlock>[] blocks;

                    if (_currentCycleId == 0)
                    {
                        _currentCycleId = 1;
                    }

                    //if (VLoadStation.GetInsideOpticalSensor()==false)
                    //{
                    //    VLoadStation.LoadATray();
                    //}
                    //if (VUnloadStation.GetInsideOpticalSensor() == false)
                    //{
                    //    VUnloadStation.LoadATray();
                    //}
                    //if (LLoadStation.GetInsideOpticalSensor()==false)
                    //{
                    //    LLoadStation.LoadATray();
                    //}

                    do
                    {
                        //WorkTable.Fixtures[(int)FixtureId.V].IsEmpty = false;
                        //WorkTable.Fixtures[(int)FixtureId.V].NG = false;

                        log = string.Empty;
                        //Stop production.
                        if (VRobot.StopProduction)
                        {
                            bool allEmpty = true;
                            foreach (var fixture in WorkTable.Fixtures)
                            {
                                if (fixture.IsEmpty == false)
                                {
                                    allEmpty = false;
                                }
                            }
                            if (allEmpty)
                            {
                                break;
                            }
                        }

                        //if (VRobot.LoadTray.CurrentPart.XIndex > VRobot.LoadTray.ColumneCount)
                        //{
                        //    VLoadTrayEmptyManualResetEvent.Reset();
                        //    VLoadTrayEmptyManualResetEvent.WaitOne();
                        //}

                        //blocks = new Task<WaitBlock>[2];

                        //blocks[0] = VRobot.WorkAsync();
                        //blocks[1] = LRobot.WorkAsync();
                        //blocks[2] = UVLight.WorkAsync();

                        //blocks[0] = VRobot.WorkAsync();
                        //blocks[0] = LRobot.WorkAsync();
                        //blocks[1] = UVLight.WorkAsync();

                        //await blocks[0];
                        //await blocks[1];
                        //Task.WaitAll(blocks);
                        //CheckTaskResults(blocks);
                        //Helper.CheckTaskResult(blocks[1]);

                        var vTask = VRobot.WorkAsync(_currentCycleId);
                        var gpTask = GluePointRobot.WorkAsync(_currentCycleId);
                        var glTask = GlueLineRobot.WorkAsync(_currentCycleId);
                        var lTask = LRobot.WorkAsync(_currentCycleId);
                        var uVTask = UVLight.WorkAsync(_currentCycleId);

                        await vTask;
                        await gpTask;
                        await glTask;
                        await lTask;
                        await uVTask;

                        log += vTask.Result.Message + Environment.NewLine;
                        log += gpTask.Result.Message + Environment.NewLine;
                        log += glTask.Result.Message + Environment.NewLine;
                        log += lTask.Result.Message + Environment.NewLine;

                        Helper.CheckTaskResult(vTask);
                        Helper.CheckTaskResult(gpTask);
                        Helper.CheckTaskResult(glTask);
                        Helper.CheckTaskResult(lTask);
                        Helper.CheckTaskResult(uVTask);

                        var tableTask = WorkTable.TurnsAsync();
                        await tableTask;
                        Helper.CheckTaskResult(tableTask);

                        _currentCycleId++;
                    } while (KeepThisShitRunning);

                    return new WaitBlock()
                    {
                        Message = "Production stopped."
                    };
                }
                catch (Exception ex)
                {
                    return new WaitBlock()
                    {
                        Code = ErrorCode.ProductionFail,
                        Message = "Production interruptted due to: " + ex.Message + " " + log,
                    };
                }
            }));
        }