private string generateId() { WorkshopDTO lastWorkshop = workshopsInstance[workshopsInstance.Count - 1]; int nextCode = Int32.Parse(lastWorkshop.WorkshopID.Substring(7)) + 1; return(idPrefix + nextCode); }
/// <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); } } }
//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; } }
public WorkshopDTO ConvDBtoDTO(Workshop old) { WorkshopDTO valid = new WorkshopDTO(); valid.WorkshopID = old.WorkshopID; valid.WorkshopName = old.WorkshopName; valid.WorkshopStatus = old.WorkshopStatus; return(valid); }
public Workshop ConvDTOtoDB(WorkshopDTO old) { Workshop valid = new Workshop(); valid.WorkshopID = old.WorkshopID; valid.WorkshopName = old.WorkshopName; valid.WorkshopStatus = old.WorkshopStatus; return(valid); }
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"); }
public IActionResult PostWorkshop([FromBody] WorkshopDTO workshop) { try { _service.CreateWorkshop((Workshop)workshop); return(Ok()); } catch { return(StatusCode(StatusCodes.Status500InternalServerError)); } }
//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; } }
private async void LoadBuildWorkshopWindow() { try { EditedWorkshop = new WorkshopDTO(); EditedWorkshop.ProvidedServices = new Persistence.Models.CarServices(); OnOpenBuildWorkshopWindow(); } catch (Exception ex) { OnMessageApplication($"Unexpected error occured! ({ex.Message})"); } }
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)); }
//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)); } }
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); } }
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; } }
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)); }
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); }
public WorkshopDTO updateWorkshop([FromBody] WorkshopDTO ws) { WorkshopDTO updatedWorkshop = _workshopLogic.UpdateWorkshop(ws); return(updatedWorkshop); }
public WorkshopDTO addWorkshop([FromBody] WorkshopDTO ws) { WorkshopDTO addedWorkshop = _workshopLogic.AddNewWorkshop(ws); return(addedWorkshop); }
/// <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); }
public GetWorkshopResult(WorkshopDTO workshop) { Workshop = workshop; }