Example #1
0
        static void Main(string[] args)
        {
            InitParams initParams = new InitParams
            {
                WorkDayTimeStart    = new TimeSpan(12, 0, 0),
                WorkDayTimeEnd      = new TimeSpan(15, 0, 0),
                DinnerTimeStart     = new TimeSpan(13, 0, 0),
                DinnerTimeEnd       = new TimeSpan(14, 0, 0),
                WorkingCellDuration = new TimeSpan(0, 25, 0),
                Path = "file.json"
            };

            InitParams initParams2 = new InitParams
            {
                WorkDayTimeStart    = new TimeSpan(10, 0, 0),
                WorkDayTimeEnd      = new TimeSpan(12, 55, 0),
                DinnerTimeStart     = new TimeSpan(11, 0, 0),
                DinnerTimeEnd       = new TimeSpan(12, 0, 0),
                WorkingCellDuration = new TimeSpan(0, 30, 0),
                Path = "file.json"
            };

            Grid grid = new Grid(initParams2);

            WorkingGrid workingGrid = grid.FormWorkingGrid();

            grid.SaveWorkingGrid(workingGrid);
        }
Example #2
0
        private bool CanConnectedColorReachCellInColumn(int rowIdx, int colIdx, ColorClassifier colCc)
        {
            var array      = WorkingGrid.GetColumn(colIdx);
            var firstIndex = IndexOf(array, colCc.MyColor);
            var lastIndex  = LastIndexOf(array, colCc.MyColor);

            if (firstIndex <= OutOfBoundsConst)
            {
                return(true);
            }
            if (firstIndex > rowIdx)
            {
                var minIdx = lastIndex - colCc.Count + 1; //3
                if (rowIdx < minIdx)
                {
                    return(false);
                }
            }
            else if (lastIndex < rowIdx)
            {
                var maxIdx = firstIndex + colCc.Count - 1; //5
                if (rowIdx > maxIdx)
                {
                    return(false);
                }
            }
            return(true);
        }
Example #3
0
        /// <summary>
        /// Подготовка для сохранения. Подсчет общего времени отдыха и проставление ID.
        /// </summary>
        private GridForStore PrepareGridForSave(WorkingGrid workingGrid)
        {
            GridForStore gridForSave = new GridForStore();

            var freeTimeMinutes = workingGrid.FreeTime.Sum(t => t.Duration.TotalMinutes);

            gridForSave.FreeTime = Convert.ToInt32(Math.Floor(freeTimeMinutes));

            gridForSave.Cells = new List <TimeCellForStore>();

            int id = 1;

            foreach (var item in workingGrid.WorkingCells)
            {
                gridForSave.Cells.Add(
                    new TimeCellForStore
                {
                    ID    = id++,
                    Start = item.Start,
                    End   = item.End
                }
                    );
            }

            return(gridForSave);
        }
Example #4
0
        private void FillCellAndSetDirty(int row, int column, Color?colorToFill = null)
        {
            colorToFill = colorToFill ?? _currentColor.MyColor;
            if (WorkingGrid[row, column].Equals(Color.Empty))
            {
                WorkingGrid[row, column] = colorToFill.Value;
                _paintedCount++;
                _isDirty = true;
            }
#if DEBUG
            _readableString = WorkingGrid.ToReadableString();
            if (AnswerGrid != null && AnswerGrid[row, column] != colorToFill.Value)
            {
                throw new Exception(string.Format("Oops, wrong color! Expected: <{0}>. Actual: <{1}>", AnswerGrid[row, column], colorToFill.Value));
            }
#endif
        }
Example #5
0
        private void SolveActually()
        {
#if DEBUG
            _readableString = WorkingGrid.ToReadableString();
#endif
            do
            {
                _iterationCounter++;
                _isDirty = false;
                Iterate(Selection.Row);
                Iterate(Selection.Column);
                IterateCells();
                if (CellCount == _paintedCount)
                {
                    break;
                }
            } while (_isDirty);
        }
Example #6
0
        /// <summary>
        /// Сохраняем дневную сетку в файл
        /// </summary>
        /// <param name="workingGrid"></param>
        public void SaveWorkingGrid(WorkingGrid workingGrid)
        {
            GridForStore gridForSave = PrepareGridForSave(workingGrid);

            JsonSerializer serializer = new JsonSerializer();

            serializer.Converters.Add(new TimespanConverter());
            serializer.NullValueHandling = NullValueHandling.Ignore;
            serializer.Formatting        = Formatting.Indented;

            using (StreamWriter sw = new StreamWriter(initParams.Path))
            {
                using (JsonWriter writer = new JsonTextWriter(sw))
                {
                    serializer.Serialize(writer, gridForSave);
                }
            }
        }
Example #7
0
        private int CountNumberOfElementsBeforeAndAfterInColumn(int startingRowIdx, int colIdx, Color colorToFind)
        {
            var array = WorkingGrid.GetColumn(colIdx);
            var count = 0;
            var i     = startingRowIdx - 1;

            while (i >= 0 && array[i].Equals(colorToFind))
            {
                count++;
                i--;
            }
            i = startingRowIdx + 1;
            while (i < RowCount && array[i].Equals(colorToFind))
            {
                count++;
                i++;
            }
            return(count);
        }
Example #8
0
 private void SetupSelectionAndFields(Selection selection)
 {
     _selection = selection;
     if (_selection == Selection.Row)
     {
         _items          = Rows;
         _oppositeItems  = Columns;
         _selectionCount = ColCount;
         _getArray       = (rowNumber => WorkingGrid.GetRow(rowNumber));
         _getCell        = ((x, y) => WorkingGrid[x, y]);
     }
     else
     {
         _items          = Columns;
         _oppositeItems  = Rows;
         _selectionCount = RowCount;
         _getArray       = (colNumber => WorkingGrid.GetColumn(colNumber));
         _getCell        = ((x, y) => WorkingGrid[y, x]);
     }
 }
Example #9
0
        private bool CanConnectedColorReachCellInRow(int rowIdx, int colIdx, ColorClassifier rowCc)
        {
            var array      = WorkingGrid.GetRow(rowIdx);
            var firstIndex = IndexOf(array, rowCc.MyColor);
            var lastIndex  = LastIndexOf(array, rowCc.MyColor);

            if (firstIndex <= OutOfBoundsConst)
            {
                return(true);
            }
            if (firstIndex > colIdx)
            {
                //a,_,_,_,b,_,_,_,_,a: "b" er connected, og Count = 2.
                //colIdx = 1
                //firstIndex = 4
                //lastIndex = 4
                var minIdx = lastIndex - rowCc.Count + 1; //3
                if (colIdx < minIdx)
                {
                    return(false);
                }
            }
            else if (lastIndex < colIdx)
            {
                //a,a,a,_,b,_,_,_,_,a: "b" er connected, og Count = 2.
                //colIdx = 6
                //firstIndex = 4
                //lastIndex = 4
                var maxIdx = firstIndex + rowCc.Count - 1; //5
                if (colIdx > maxIdx)
                {
                    return(false);
                }
            }
            return(true);
        }
Example #10
0
        private void BillImport_Load(object sender, EventArgs e)
        {
            int jobcount = 0;

            Parent_Item = ListToImport[0].Parent_item;

            try
            {
                jobcount = (int)jobTableAdapter.CountJobs(ListToImport[0].Parent_item, "CJ%");
            }
            catch { }

            if (jobcount > 0)
            {
                FetchBill form = new FetchBill(ListToImport[0].Parent_item);

                form.ShowDialog();

                for (int i = 0; i < form.BillList.Count; i++)
                {
                    WorkingGrid.Rows.Add();

                    WorkingGrid[1, i].Value = form.BillList[i].Item;

                    WorkingGrid[0, i].Value = form.BillList[i].sequence;

                    WorkingGrid[3, i].Value = form.BillList[i].qty;

                    WorkingGrid[5, i].Value = form.BillList[i].u_m;
                }

                form.Close();

                form.Dispose();

                for (int i = 0; i < WorkingGrid.Rows.Count; i++)
                {
                    for (int j = 0; j < ListToImport.Count; j++)
                    {
                        if (WorkingGrid[1, i].Value != null)
                        {
                            if (WorkingGrid[1, i].Value.ToString().Trim() == ListToImport[j].Item)
                            {
                                System.Diagnostics.Debug.Print(ListToImport[j].Item);

                                WorkingGrid[2, i].Value = ListToImport[j].Qty;

                                ListToImport.RemoveAt(j);
                            }
                        }
                    }
                }

                for (int i = 0; i < ListToImport.Count; i++)
                {
                    WorkingGrid.Rows.Insert(0);

                    WorkingGrid[1, 0].Value = ListToImport[i].Item;

                    WorkingGrid[2, 0].Value = ListToImport[i].Qty;

                    WorkingGrid[0, 0].Value = Convert.ToInt32(WorkingGrid[0, WorkingGrid.Rows.Count - 1].Value) + 1;

                    WorkingGrid.Sort(WorkingGrid.Columns[1], ListSortDirection.Ascending);
                }

                SetGrid();
            }
            else
            {
                ItemCreate form = new ItemCreate(ListToImport[0].Parent_item, "");

                form.ShowDialog();

                if (form.DialogResult == DialogResult.Cancel)
                {
                    form.Dispose();

                    this.Close();

                    this.Dispose();
                }
                else
                {
                    form.Dispose();

                    for (int i = 0; i < ListToImport.Count; i++)
                    {
                        WorkingGrid.Rows.Insert(0);

                        WorkingGrid[0, 0].Value = i + 1;

                        WorkingGrid[1, 0].Value = ListToImport[i].Item;

                        WorkingGrid[2, 0].Value = ListToImport[i].Qty;

                        WorkingGrid[4, 0].Value = ListToImport[i].Description;

                        WorkingGrid.Sort(WorkingGrid.Columns[1], ListSortDirection.Ascending);
                    }
                }
            }

            SetGrid();

            for (int i = 0; i < WorkingGrid.Rows.Count; i++)
            {
                if (WorkingGrid[4, i].Value == null)
                {
                    int ItemExists = 0;
                    try
                    {
                        ItemExists = Convert.ToInt32(itemTableAdapter.ExistsCount(WorkingGrid[1, i].Value.ToString()));
                    }
                    catch { ItemExists = 0; }

                    if (ItemExists != 0)
                    {
                        WorkingGrid[4, i].Value = itemTableAdapter.DescQuery(WorkingGrid[1, i].Value.ToString());
                    }
                }
            }
        }