コード例 #1
0
    private string generateId()
    {
        WorkshopDTO lastWorkshop = workshopsInstance[workshopsInstance.Count - 1];
        int         nextCode     = Int32.Parse(lastWorkshop.WorkshopID.Substring(7)) + 1;

        return(idPrefix + nextCode);
    }
コード例 #2
0
        /// <summary>
        /// 작업장 그리드 정보가 갱신되면 이를 불러와 작업장 정보에 저장하는 함수
        /// </summary>
        /// <param name="_datagrid">작업장 정보가 변경된 그리드</param>
        /// <param name="_workshopList">갱신할 작업장 정보</param>
        /// <remarks>
        /// 최초 작성 : 이동건, 2016년 02월 25일
        /// </remarks>
        void IDataManagement.UpdateWorkshopDataOfGrid(DataGridView _datagrid, List <WorkshopDTO> _workshopList)
        {
            WorkshopDTO tempWorkshopDTO;

            _workshopList.Clear();
            foreach (DataGridViewRow row in _datagrid.Rows)
            {
                //for(int i=0; i < row.Cells.Count; i++)
                //{
                //    if (row.IsNewRow || row.Cells[i].Value == null)
                //        break;
                //                  }
                if (row.Cells[0].Value != null)
                {
                    string value1 = row.Cells[0].Value.ToString();
                    string value2 = row.Cells[1].Value.ToString();
                    string value3 = row.Cells[2].Value.ToString();
                    string value4 = row.Cells[3].Value.ToString();
                    string value5 = row.Cells[4].Value.ToString();

                    tempWorkshopDTO = new WorkshopDTO(Convert.ToInt16(value1), value2, Convert.ToDouble(value3), Convert.ToDouble(value4), Convert.ToInt32(value5));

                    _workshopList.Add(tempWorkshopDTO);
                }
            }
        }
コード例 #3
0
        //Handler for workshop evalauation from reserved browser
        public void OnWorkshopEvaluated(object sender, WorkshopDTO workshopDto)
        {
            var workshop = workshopsRawList?.FirstOrDefault(dto => dto.Id == workshopDto.Id);

            if (workshop != null)
            {
                workshop.IsEvaluated = true;
            }
        }
コード例 #4
0
    public WorkshopDTO ConvDBtoDTO(Workshop old)
    {
        WorkshopDTO valid = new WorkshopDTO();

        valid.WorkshopID     = old.WorkshopID;
        valid.WorkshopName   = old.WorkshopName;
        valid.WorkshopStatus = old.WorkshopStatus;
        return(valid);
    }
コード例 #5
0
    public Workshop ConvDTOtoDB(WorkshopDTO old)
    {
        Workshop valid = new Workshop();

        valid.WorkshopID     = old.WorkshopID;
        valid.WorkshopName   = old.WorkshopName;
        valid.WorkshopStatus = old.WorkshopStatus;
        return(valid);
    }
コード例 #6
0
 public WorkshopDTO UpdateWorkshop(WorkshopDTO workshop)
 {
     if (ValidStatus.Contains(workshop.WorkshopStatus))
     {
         Workshop updatedWorkShopDB = _workshopTableDB.Update(ConvDTOtoDB(workshop));
         Console.WriteLine(updatedWorkShopDB.WorkshopStatus);
         return(ConvDBtoDTO(updatedWorkShopDB));
     }
     throw new BusinessLogicException("Empty or invalid status field");
 }
コード例 #7
0
 public IActionResult PostWorkshop([FromBody] WorkshopDTO workshop)
 {
     try
     {
         _service.CreateWorkshop((Workshop)workshop);
         return(Ok());
     }
     catch
     {
         return(StatusCode(StatusCodes.Status500InternalServerError));
     }
 }
コード例 #8
0
 //Handler to reduce number of non evaluated workshop on badge
 public void OnWorkshopEvaluated(object sender, WorkshopDTO workshopDto)
 {
     Count--;
     if (Count == 0)
     {
         BindingContext = null;
     }
     else
     {
         BindingContext = Count;
     }
 }
コード例 #9
0
 private async void LoadBuildWorkshopWindow()
 {
     try
     {
         EditedWorkshop = new WorkshopDTO();
         EditedWorkshop.ProvidedServices = new Persistence.Models.CarServices();
         OnOpenBuildWorkshopWindow();
     }
     catch (Exception ex)
     {
         OnMessageApplication($"Unexpected error occured! ({ex.Message})");
     }
 }
コード例 #10
0
    public WorkshopDTO AddNewWorkshop(WorkshopDTO workshop)
    {
        if (string.IsNullOrEmpty(workshop.WorkshopName))
        {
            throw new BusinessLogicException("Empty Name field");
        }

        WorkshopDTO newWorkshop = new WorkshopDTO
        {
            WorkshopID     = generateId(),
            WorkshopName   = workshop.WorkshopName,
            WorkshopStatus = initialWorkshopStatus
        };
        Workshop newWorkShopDB = _workshopTableDB.Create(ConvDTOtoDB(newWorkshop));

        return(ConvDBtoDTO(newWorkShopDB));
    }
コード例 #11
0
        //Handler For Disenrolling
        public void OnUserDisenrolled(object sender, WorkshopDTO workshopDto)
        {
            var workshop = workshopsRawList?.FirstOrDefault(dto => dto.Id == workshopDto.Id);

            if (workshop == null)
            {
                return;
            }
            if (_type == WorkshopBrowserType.All)
            {
                workshop.IsEnrolled = false;
                workshop.TakenSpots--;
            }
            else
            {
                workshopsRawList.Remove(workshop);
                displayList = ApplySorting(ApplyFilters(workshopsRawList));
            }
        }
コード例 #12
0
        public async Task SaveNewWorkshop(WorkshopDTO newWorkshop)
        {
            try
            {
                HttpResponseMessage response = await _client.PostAsJsonAsync("api/workshops/", newWorkshop);

                if (response.IsSuccessStatusCode)
                {
                    return;
                }
                else
                {
                    throw new NetworkException("Service returned response: " + response.StatusCode);
                }
            }
            catch (Exception ex)
            {
                throw new NetworkException("NetworkException: " + ex);
            }
        }
コード例 #13
0
        public void OnUserEnrolled(object sender, WorkshopDTO workshopDto)
        {
            if (_type == WorkshopBrowserType.Reserved)
            {
                workshopsRawList?.Add(workshopDto);
                displayList = ApplySorting(ApplyFilters(workshopsRawList));
                return;
            }
            else
            {
                var workshop = workshopsRawList?.FirstOrDefault(dto => dto.Id == workshopDto.Id);

                if (workshop == null)
                {
                    return;
                }
                workshop.TakenSpots++;
                workshop.IsEnrolled = true;
            }
        }
コード例 #14
0
    public WorkshopDTO UpdateWorkshopStatus(string id, string status)
    {
        WorkshopDTO updatedWorkshop = null;

        for (int i = 0; i < workshopsInstance.Count; i++)
        {
            if (workshopsInstance[i].WorkshopID == id)
            {
                updatedWorkshop = workshopsInstance[i];
                updatedWorkshop.WorkshopStatus = status;
            }
        }
        if (updatedWorkshop == null)
        {
            throw new BusinessLogicException("Workshop not found");
        }

        Workshop statusUpdatesWorkShopDB = _workshopTableDB.Update(ConvDTOtoDB(updatedWorkshop));

        return(ConvDBtoDTO(statusUpdatesWorkShopDB));
    }
コード例 #15
0
        PerspectiveCamera SetCameraPosition(PerspectiveCamera _camera, WorkshopDTO _workshop)
        {
            PerspectiveCamera returnCamera = _camera;

            double pX = _workshop.RowCount / 2.0;
            double pY = _workshop.ColumnCount / 2.0;
            double pZ;

            if ((pY / pX) < 2.0) //작업장 세로길이(pX)를 기준으로 카메라 맞춤
            {
                pZ = Math.Tan(Math.PI * 80.0 / 180.0) * pX;
            }
            else //작업장 가로길이(pY)를 기준으로 카메라 맞춤
            {
                pZ = Math.Tan(Math.PI * 70.0 / 180.0) * pY;
            }


            double dX = 0.0;
            double dY = 0.0;
            double dZ = -1.0;

            double uX = -1.0;
            double uY = 0.0;
            double uZ = 0.0;

            Point3D  cameraPosition      = new Point3D(pX, pY, pZ);
            Vector3D cameraLookDirection = new Vector3D(dX, dY, dZ);
            Vector3D cameraUpDirection   = new Vector3D(uX, uY, uZ);

            returnCamera.Position      = cameraPosition;
            returnCamera.LookDirection = cameraLookDirection;
            returnCamera.UpDirection   = cameraUpDirection;

            return(returnCamera);
        }
コード例 #16
0
        public WorkshopDTO updateWorkshop([FromBody] WorkshopDTO ws)
        {
            WorkshopDTO updatedWorkshop = _workshopLogic.UpdateWorkshop(ws);

            return(updatedWorkshop);
        }
コード例 #17
0
        public WorkshopDTO addWorkshop([FromBody] WorkshopDTO ws)
        {
            WorkshopDTO addedWorkshop = _workshopLogic.AddNewWorkshop(ws);

            return(addedWorkshop);
        }
コード例 #18
0
        /// <summary>
        /// 실제로 가시화를 수행하는 이벤트 (BLF 알고리즘에서 날짜 선택시)
        /// 주수헌 수정,
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lstArrDateList_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            seletedDateIndex = lstArrDateList.SelectedIndex;

            //조회하고자 하는 특정 날짜 index
            int target_date = seletedDateIndex;

            List <BlockDTO> targetBlockList = new List <BlockDTO>();

            //블록배치와 주판 배치에 따라 다른 대상 설정

            //특정 날짜에 배치되어 있는 블록 호출

            targetBlockList = mResultsInfo.TotalDailyArragnementedBlockList[seletedDateIndex];

            // 배치 블록 가시화 창 밑의 배치 블록 리스트에 현재 블록 정보 입력하는 코드
            //grdBlockDetails.ItemsSource = targetBlockList;


            //작업장 원점 좌표
            //List<double[]> ws = new List<double[]>();
            //foreach (WorkshopDTO workshop in mWorkshopInfoList)
            //{
            //    ws.Add(new double[2] { workshop.RowLocation, workshop.ColumnLocation });
            //}



            //카메라 초기화를 위한 임시 작업장 생성
            WorkshopDTO tempWorkshopDTO = new WorkshopDTO();

            tempWorkshopDTO.RowCount    = 199;
            tempWorkshopDTO.ColumnCount = 809;
            //3차원 가시화
            HelixResultViewer.Children.Clear();
            if (main3DGroup.Children.Count == 0)
            {
                //카메라 초기화
                PerspectiveCamera myCamera = (PerspectiveCamera)HelixResultViewer.Camera;
                myCamera = SetCameraPosition(myCamera, tempWorkshopDTO);
            }
            else
            {
                main3DGroup.Children.Clear();
            }

            //조명 설정
            var lights = new DefaultLights();

            HelixResultViewer.Children.Add(lights);

            DateTime      CurrentDate = mResultsInfo.ArrangementStartDate.AddDays(seletedDateIndex);
            ModelVisual3D model1      = new ModelVisual3D();

            //작업장 가시화
            foreach (WorkshopDTO Workshop in mWorkshopInfoList)
            {
                if (Workshop.Type != -1)
                {
                    main3DGroup.Children.Add(CreateRectModel(Workshop.RowCount, Workshop.ColumnCount, 0, new Point3D(Workshop.RowLocation, Workshop.ColumnLocation, 0), Colors.White));
                }
                else
                {
                    main3DGroup.Children.Add(CreateRectModel(Workshop.RowCount, Workshop.ColumnCount, 0, new Point3D(Workshop.RowLocation, Workshop.ColumnLocation, 0), Colors.Gray, 10, new string[4] {
                        Workshop.Name, "", "", ""
                    }));
                }
            }
            //main3DGroup.Children.Add(CreateRectModel(mWorkshopInfoList[0].RowCount, mWorkshopInfoList[0].ColumnCount, 0, new Point3D(ws[0][0], ws[0][1], 0), Colors.White));
            //main3DGroup.Children.Add(CreateRectModel(mWorkshopInfoList[1].RowCount, mWorkshopInfoList[1].ColumnCount, 0, new Point3D(ws[1][0], ws[1][1], 0), Colors.White));
            //main3DGroup.Children.Add(CreateRectModel(mWorkshopInfoList[2].RowCount, mWorkshopInfoList[2].ColumnCount, 0, new Point3D(ws[2][0], ws[2][1], 0), Colors.White));
            //main3DGroup.Children.Add(CreateRectModel(mWorkshopInfoList[3].RowCount, mWorkshopInfoList[3].ColumnCount, 0, new Point3D(ws[3][0], ws[3][1], 0), Colors.White));
            ////도크 가시화
            //main3DGroup.Children.Add(CreateRectModel(mWorkshopInfoList[3].RowCount, ws[2][1] - mWorkshopInfoList[3].ColumnCount, 0.000000, new Point3D(0, mWorkshopInfoList[3].ColumnCount, 0), Colors.Gray, 10, new string[4] { "Main Dock", "", "", ""}));
            ////입고장(북) 가시화
            ////main3DGroup.Children.Add(CreateRectModel(mWorkshopInfoList[0].RowCount, ws[1][1] - ws[0][1] - mWorkshopInfoList[0].ColumnCount, 1, new Point3D(ws[0][0], ws[0][1] + mWorkshopInfoList[0].ColumnCount, 0), Colors.Gray));


            //배치불가구역 가시화
            foreach (WorkshopDTO Workshop in mWorkshopInfoList)
            {
                foreach (ArrangementMatrixInfoDTO Object in Workshop.ArrangementMatrixInfoList)
                {
                    main3DGroup.Children.Add(CreateRectModel(Math.Ceiling(Object.RowCount), Math.Ceiling(Object.ColumnCount), 0, new Point3D(Workshop.RowLocation + Math.Ceiling(Object.RowLocation), Workshop.ColumnLocation + Math.Ceiling(Object.ColumnLocation), 0), Colors.LightCyan, 3, new string[4] {
                        "NA", "", "", ""
                    }));
                }
            }


            //블록 가시화

            foreach (BlockDTO Block in targetBlockList)
            {
                //리드타임 계산 (출고일 - 입고일)
                TimeSpan ts       = Block.ExportDate - Block.ImportDate;
                int      Leadtime = ts.Days;
                Leadtime++;

                //실제 반출일 계산 (실제 입고일 + 리드타임)
                DateTime ActualExportDate = Block.ActualImportDate.AddDays(Leadtime - 1);

                //남아 있는 작업일 계산 (실제 반출일 - 현재 날짜)
                TimeSpan ts1          = ActualExportDate - CurrentDate;
                int      ResidualTime = ts1.Days;
                ResidualTime++;

                //방향에 따른 가로세로 길이 조정
                double tempRow = Math.Ceiling(Block.RowCount);
                double tempCol = Math.Ceiling(Block.ColumnCount);
                if (Block.Orientation == 1)
                {
                    tempRow = Math.Ceiling(Block.ColumnCount);
                    tempCol = Math.Ceiling(Block.RowCount);
                }


                //일반 블록은 검정 테두리
                Color blockColor = Colors.Black;
                //blockColor.A = 220;

                //당일 입고 블록은 초록색
                if (CurrentDate == Block.ActualImportDate)
                {
                    blockColor = Colors.LightGreen;
                }
                //blockColor.A = 100;


                //조건 만족 블록은 파란색
                if (Block.IsRoadSide == true)
                {
                    blockColor = Colors.Blue;
                }

                //지연 블록은 빨간색
                if (Block.IsDelayed == true)
                {
                    blockColor = Colors.Red;
                }

                //출고 블록은 노란색
                if (ResidualTime == 1)
                {
                    blockColor = Colors.Yellow;
                }
                //blockColor.A = 100;

                DateTime tempdate         = Block.InitialExportDate.AddDays(2);
                string[] arrprintedstring = { Block.Project, "-" + Block.Name, Block.ImportDate.ToShortDateString().Substring(5), Block.ExportDate.ToShortDateString().Substring(5) };
                if (Block.IsPrior == true & Block.IsFloatingCraneExportBlock == false)
                {
                    arrprintedstring[3] = "aaa";
                }
                else if (Block.IsFloatingCraneExportBlock == true)
                {
                    arrprintedstring[2] = Block.InitialImportDate.ToShortDateString().Substring(5);
                }
                arrprintedstring[3] = Block.InitialExportDate.ToShortDateString().Substring(5);

                //블록 위에 출력되는 정보 확인을 위하여 minSize 계산
                double minSize = Block.RowCount;
                if (Block.RowCount > Block.ColumnCount)
                {
                    minSize = Block.ColumnCount;
                }
                minSize = minSize / arrprintedstring[0].Length;
                if (minSize > 3.0)
                {
                    minSize = 3.0;
                }

                main3DGroup.Children.Add(CreateRectModel(tempRow, tempCol, 0, new Point3D(mWorkshopInfoList[Block.CurrentLocatedWorkshopIndex].RowLocation + Math.Ceiling(Block.LocatedRow), mWorkshopInfoList[Block.CurrentLocatedWorkshopIndex].ColumnLocation + Math.Ceiling(Block.LocatedColumn), 0), blockColor));
                //우선순위 블록은 노란색으로 채우기
                if (Block.IsPrior == true & Block.IsFloatingCraneExportBlock == false)
                {
                    main3DGroup.Children.Add(CreateRectModel(tempRow - 0.8, tempCol - 0.8, 0, new Point3D(mWorkshopInfoList[Block.CurrentLocatedWorkshopIndex].RowLocation + Math.Ceiling(Block.LocatedRow) + 0.4, mWorkshopInfoList[Block.CurrentLocatedWorkshopIndex].ColumnLocation + Math.Ceiling(Block.LocatedColumn) + 0.4, 0), Colors.Yellow, minSize, arrprintedstring));
                }
                //출고장용 블록
                else if (Block.IsFloatingCraneExportBlock == true)
                {
                    main3DGroup.Children.Add(CreateRectModel(tempRow - 0.8, tempCol - 0.8, 0, new Point3D(mWorkshopInfoList[Block.CurrentLocatedWorkshopIndex].RowLocation + Math.Ceiling(Block.LocatedRow) + 0.4, mWorkshopInfoList[Block.CurrentLocatedWorkshopIndex].ColumnLocation + Math.Ceiling(Block.LocatedColumn) + 0.4, 0), Colors.Yellow, minSize, arrprintedstring));
                }
                else
                {
                    main3DGroup.Children.Add(CreateRectModel(tempRow - 0.8, tempCol - 0.8, 0, new Point3D(mWorkshopInfoList[Block.CurrentLocatedWorkshopIndex].RowLocation + Math.Ceiling(Block.LocatedRow) + 0.4, mWorkshopInfoList[Block.CurrentLocatedWorkshopIndex].ColumnLocation + Math.Ceiling(Block.LocatedColumn) + 0.4, 0), Colors.Silver, minSize, arrprintedstring));
                }
            }


            model1.Content = main3DGroup;
            HelixResultViewer.Children.Add(model1);
        }
コード例 #19
0
 public GetWorkshopResult(WorkshopDTO workshop)
 {
     Workshop = workshop;
 }