public void validate_default() { KanbanViewModel viewModel = new KanbanViewModel(); var result = viewModel.Validate(null); Assert.True(0 < result.Count()); }
public void Should_Success_Instantiate() { KanbanViewModel viewModel = new KanbanViewModel() { UId = "UId", BadOutput = 1, Code = "Code", FinishWidth = "FinishWidth" }; }
public void validate_when_CartNumber_Empty() { KanbanViewModel viewModel = new KanbanViewModel() { Cart = new CartViewModel() { CartNumber = "" } }; var result = viewModel.Validate(null); Assert.True(0 < result.Count()); }
public async Task<IActionResult> Create(string id, KanbanViewModel dto) { dto.CreateIssueDto.FolderId = id; try { var issue = await _issueService.Create(dto.CreateIssueDto); return Redirect($"/Issue/Info/{issue.Id}"); } catch(BusinessException e) { return View("Error", ErrorViewModel.WithError(e.Message)); } }
// GET: Kanban //Kanban/Kanban public ActionResult Kanban() { var spList = _context.SP.ToList(); var knbs = _context.Kanban.ToList(); var viewModel = new KanbanViewModel { TasksList = knbs, StatusPriorities = spList }; return(PartialView(viewModel)); }
public void Mapping_With_AutoMapper_Profiles() { var configuration = new MapperConfiguration(cfg => { cfg.AddProfile <KanbanProfile>(); }); var mapper = configuration.CreateMapper(); KanbanViewModel vm = new KanbanViewModel { Id = 1 }; KanbanModel model = mapper.Map <KanbanModel>(vm); Assert.Equal(vm.Id, model.Id); }
public void validate_when_Instruction_Step_empty() { KanbanViewModel viewModel = new KanbanViewModel() { Instruction = new KanbanInstructionViewModel() { Id = 1, Steps = new List <KanbanStepViewModel>() { } } }; var result = viewModel.Validate(null); Assert.True(0 < result.Count()); }
public MemoryStream GeneratePdfTemplate(KanbanViewModel viewModel, int timeoffset) { const int MARGIN = 20; Font header_font = FontFactory.GetFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 14); Font normal_font = FontFactory.GetFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 8); Font body_font = FontFactory.GetFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 8); Font normal_font_underlined = FontFactory.GetFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 8, Font.UNDERLINE); Font bold_font = FontFactory.GetFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 8); Font body_bold_font = FontFactory.GetFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 8); Document document = new Document(PageSize.A4, MARGIN, MARGIN, MARGIN, MARGIN); MemoryStream stream = new MemoryStream(); PdfWriter writer = PdfWriter.GetInstance(document, stream); document.Open(); #region Header PdfPTable headerTable = new PdfPTable(4); PdfPCell cellHeaderCS4 = new PdfPCell() { Border = Rectangle.NO_BORDER, Colspan = 4, PaddingTop = 1, PaddingBottom = 1 }; PdfPCell cellHeader = new PdfPCell() { Border = Rectangle.NO_BORDER, PaddingTop = 1, PaddingBottom = 1 }; float[] widths = new float[] { 6f, 10f, 5f, 10f }; headerTable.SetWidths(widths); headerTable.WidthPercentage = 100; cellHeaderCS4.Phrase = new Phrase("PT DAN LIRIS", header_font); cellHeaderCS4.HorizontalAlignment = Element.ALIGN_CENTER; headerTable.AddCell(cellHeaderCS4); cellHeaderCS4.Phrase = new Phrase("KARTU PENGANTAR PROSES PRODUKSI", normal_font_underlined); cellHeaderCS4.HorizontalAlignment = Element.ALIGN_CENTER; headerTable.AddCell(cellHeaderCS4); cellHeaderCS4.Phrase = new Phrase($"Delivery: {DateTime.Now.ToString("dd MMMM yyyy", new System.Globalization.CultureInfo("id-ID"))}", body_font); //cellHeader.Phrase = new Phrase($"Delivery: {viewModel.ProductionOrder.DeliveryDate.Value.ToString("dd MMMM yyyy", new System.Globalization.CultureInfo("id-ID"))}", normal_font); cellHeaderCS4.HorizontalAlignment = Element.ALIGN_RIGHT; headerTable.AddCell(cellHeaderCS4); cellHeaderCS4.Phrase = new Phrase("--------------------------------", bold_font); cellHeaderCS4.HorizontalAlignment = Element.ALIGN_RIGHT; headerTable.AddCell(cellHeaderCS4); cellHeaderCS4.Phrase = new Phrase("FM-FP-00-PC-19-020", body_bold_font); cellHeaderCS4.HorizontalAlignment = Element.ALIGN_RIGHT; headerTable.AddCell(cellHeaderCS4); cellHeaderCS4.Phrase = new Phrase("", bold_font); cellHeaderCS4.HorizontalAlignment = Element.ALIGN_CENTER; headerTable.AddCell(cellHeaderCS4); cellHeader.Phrase = new Phrase("NO ORDER", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeader.Phrase = new Phrase($": {viewModel.ProductionOrder.OrderNo}", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeader.Phrase = new Phrase("MATERIAL", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeader.Phrase = new Phrase($": {viewModel.ProductionOrder.Material.Name}", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeader.Phrase = new Phrase("BUYER", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeader.Phrase = new Phrase($": {viewModel.ProductionOrder.Buyer.Name}", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeader.Phrase = new Phrase("NO BENANG", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeader.Phrase = new Phrase($": {viewModel.ProductionOrder.YarnMaterial.Name}", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeader.Phrase = new Phrase("WARNA", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); var color = viewModel.SelectedProductionOrderDetail.ColorType.Id.Equals(0) ? viewModel.SelectedProductionOrderDetail.ColorRequest : viewModel.SelectedProductionOrderDetail.ColorRequest + " - " + viewModel.SelectedProductionOrderDetail.ColorType.Name; cellHeader.Phrase = new Phrase($": {color}", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeader.Phrase = new Phrase("GRADE", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeader.Phrase = new Phrase($": {viewModel.Grade}", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeader.Phrase = new Phrase("STANDARD HANDFEEL", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeader.Phrase = new Phrase($": {viewModel.ProductionOrder.HandlingStandard}", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeader.Phrase = new Phrase("PANJANG", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeader.Phrase = new Phrase($": {viewModel.Cart.Qty}", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeader.Phrase = new Phrase("LEBAR FINISH", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeader.Phrase = new Phrase($": {viewModel.ProductionOrder.FinishWidth}", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeader.Phrase = new Phrase("NO KERETA", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeader.Phrase = new Phrase($": {viewModel.Cart.CartNumber}", body_font); cellHeader.HorizontalAlignment = Element.ALIGN_LEFT; headerTable.AddCell(cellHeader); cellHeaderCS4.Phrase = new Phrase("", bold_font); cellHeaderCS4.HorizontalAlignment = Element.ALIGN_CENTER; headerTable.AddCell(cellHeaderCS4); cellHeaderCS4.Phrase = new Phrase("", bold_font); cellHeaderCS4.HorizontalAlignment = Element.ALIGN_CENTER; headerTable.AddCell(cellHeaderCS4); document.Add(headerTable); #endregion Header #region Table 1 PdfPTable bodyTable1 = new PdfPTable(2); float[] bodyTable1Widths = new float[] { 50f, 50f }; bodyTable1.SetWidths(bodyTable1Widths); bodyTable1.WidthPercentage = 100; PdfPTable bodyTable1Left = new PdfPTable(6); float[] bodyTable1LeftWidths = new float[] { 10f, 10f, 10f, 50f, 10f, 10f }; bodyTable1Left.SetWidths(bodyTable1LeftWidths); bodyTable1Left.WidthPercentage = 100; PdfPTable bodyTable1Right = new PdfPTable(4); float[] bodyTable1RightWidths = new float[] { 30f, 20f, 30f, 20f }; bodyTable1Right.SetWidths(bodyTable1RightWidths); bodyTable1Right.WidthPercentage = 100; #region Set Table 1 Header PdfPCell table1LeftCellHeader = new PdfPCell() { FixedHeight = 20 }; PdfPCell table1RightCellHeader = new PdfPCell() { FixedHeight = 20, Colspan = 4 }; table1LeftCellHeader.Phrase = new Phrase("TGL", body_bold_font); table1LeftCellHeader.HorizontalAlignment = Element.ALIGN_CENTER; table1LeftCellHeader.VerticalAlignment = Element.ALIGN_CENTER; bodyTable1Left.AddCell(table1LeftCellHeader); table1LeftCellHeader.Phrase = new Phrase("MESIN", body_bold_font); table1LeftCellHeader.HorizontalAlignment = Element.ALIGN_CENTER; table1LeftCellHeader.VerticalAlignment = Element.ALIGN_CENTER; bodyTable1Left.AddCell(table1LeftCellHeader); table1LeftCellHeader.Phrase = new Phrase("SHIFT", body_bold_font); table1LeftCellHeader.HorizontalAlignment = Element.ALIGN_CENTER; table1LeftCellHeader.VerticalAlignment = Element.ALIGN_CENTER; bodyTable1Left.AddCell(table1LeftCellHeader); table1LeftCellHeader.Phrase = new Phrase("KETERANGAN", body_bold_font); table1LeftCellHeader.HorizontalAlignment = Element.ALIGN_CENTER; table1LeftCellHeader.VerticalAlignment = Element.ALIGN_CENTER; bodyTable1Left.AddCell(table1LeftCellHeader); table1LeftCellHeader.Phrase = new Phrase("NAMA", body_bold_font); table1LeftCellHeader.HorizontalAlignment = Element.ALIGN_CENTER; table1LeftCellHeader.VerticalAlignment = Element.ALIGN_CENTER; bodyTable1Left.AddCell(table1LeftCellHeader); table1LeftCellHeader.Phrase = new Phrase("PARAF", body_bold_font); table1LeftCellHeader.HorizontalAlignment = Element.ALIGN_CENTER; table1LeftCellHeader.VerticalAlignment = Element.ALIGN_CENTER; bodyTable1Left.AddCell(table1LeftCellHeader); table1RightCellHeader.Phrase = new Phrase("FLOW PROSES", body_bold_font); table1RightCellHeader.HorizontalAlignment = Element.ALIGN_CENTER; table1RightCellHeader.VerticalAlignment = Element.ALIGN_CENTER; bodyTable1Right.AddCell(table1RightCellHeader); #endregion Set Table 1 Header #region Set Table 1 Value PdfPCell table1LeftCell = new PdfPCell() { FixedHeight = 15 }; PdfPCell table1RightCellRS2CS4 = new PdfPCell() { Colspan = 4, FixedHeight = 30 }; PdfPCell table1RightCellNoRightBorder = new PdfPCell() { FixedHeight = 15, BorderWidthRight = 0 }; PdfPCell table1RightCellNoLeftBorder = new PdfPCell() { FixedHeight = 15, BorderWidthLeft = 0 }; int totalRow = 0; foreach (var step in viewModel.Instruction.Steps) { table1RightCellRS2CS4.Phrase = new Phrase(step.Process, body_font); table1RightCellRS2CS4.HorizontalAlignment = Element.ALIGN_CENTER; table1RightCellRS2CS4.VerticalAlignment = Element.ALIGN_CENTER; bodyTable1Right.AddCell(table1RightCellRS2CS4); totalRow += 2; int countIndex = 0; foreach (var stepIndicator in step.StepIndicators) { table1RightCellNoRightBorder.Phrase = new Phrase(stepIndicator.Name, body_font); table1RightCellNoRightBorder.HorizontalAlignment = Element.ALIGN_LEFT; bodyTable1Right.AddCell(table1RightCellNoRightBorder); table1RightCellNoLeftBorder.Phrase = new Phrase($": {stepIndicator.Value} {stepIndicator.Uom}", body_font); table1RightCellNoLeftBorder.HorizontalAlignment = Element.ALIGN_LEFT; bodyTable1Right.AddCell(table1RightCellNoLeftBorder); countIndex++; if (countIndex == 2) { totalRow++; countIndex = 0; } } if (step.StepIndicators.Count % 2 != 0) { table1RightCellNoRightBorder.Phrase = new Phrase("", body_font); table1RightCellNoRightBorder.HorizontalAlignment = Element.ALIGN_LEFT; bodyTable1Right.AddCell(table1RightCellNoRightBorder); table1RightCellNoLeftBorder.Phrase = new Phrase("", body_font); table1RightCellNoLeftBorder.HorizontalAlignment = Element.ALIGN_LEFT; bodyTable1Right.AddCell(table1RightCellNoLeftBorder); totalRow++; } } for (int i = 0; i < totalRow; i++) { AddSixCellTableRow(table1LeftCell, bodyTable1Left); } PdfPCell bodyTable1LeftCol = new PdfPCell() { Border = Rectangle.NO_BORDER, Padding = 0 }; bodyTable1LeftCol.AddElement(bodyTable1Left); PdfPCell bodyTable1RightCol = new PdfPCell() { Border = Rectangle.NO_BORDER, Padding = 0 }; bodyTable1RightCol.AddElement(bodyTable1Right); bodyTable1.AddCell(bodyTable1LeftCol); bodyTable1.AddCell(bodyTable1RightCol); //try //{ // document.Add(bodyTable1); //} //catch(Exception e) //{ // throw new Exception(e.Message); //} #endregion Set Table 1 Value document.Add(bodyTable1); #endregion Table 1 document.Add(new Paragraph("\n")); #region Table 2 int StepTotal = viewModel.Instruction.Steps.Count; int Columns = StepTotal + 5; PdfPTable bodyTable2 = new PdfPTable(Columns); float[] bodyTable2Widths = new float[Columns]; for (int i = 0; i < Columns; i++) { if (i > 3 && i < Columns - 1) { bodyTable2Widths[i] = 80 / StepTotal; } else { bodyTable2Widths[i] = 5; } } bodyTable2.SetWidths(bodyTable2Widths); bodyTable2.WidthPercentage = 100; PdfPCell table2CellHeader = new PdfPCell(); PdfPCell table2CellHeaderCS3 = new PdfPCell() { Colspan = 3 }; PdfPCell table2CellHeaderRS2 = new PdfPCell() { Rowspan = 2 }; table2CellHeaderRS2.Phrase = new Phrase("NO PCS", body_bold_font); table2CellHeaderRS2.HorizontalAlignment = Element.ALIGN_CENTER; table2CellHeaderRS2.VerticalAlignment = Element.ALIGN_CENTER; bodyTable2.AddCell(table2CellHeaderRS2); table2CellHeaderCS3.Phrase = new Phrase("PANJANG", body_bold_font); table2CellHeaderCS3.HorizontalAlignment = Element.ALIGN_CENTER; table2CellHeaderCS3.VerticalAlignment = Element.ALIGN_CENTER; bodyTable2.AddCell(table2CellHeaderCS3); foreach (var step in viewModel.Instruction.Steps) { table2CellHeaderRS2.Phrase = new Phrase(step.Alias, body_bold_font); table2CellHeaderRS2.HorizontalAlignment = Element.ALIGN_CENTER; table2CellHeaderRS2.VerticalAlignment = Element.ALIGN_CENTER; bodyTable2.AddCell(table2CellHeaderRS2); } table2CellHeaderRS2.Phrase = new Phrase("NO PCS", body_bold_font); table2CellHeaderRS2.HorizontalAlignment = Element.ALIGN_CENTER; table2CellHeaderRS2.VerticalAlignment = Element.ALIGN_CENTER; bodyTable2.AddCell(table2CellHeaderRS2); table2CellHeader.Phrase = new Phrase("ASLI", body_bold_font); table2CellHeader.HorizontalAlignment = Element.ALIGN_CENTER; table2CellHeader.VerticalAlignment = Element.ALIGN_CENTER; bodyTable2.AddCell(table2CellHeader); table2CellHeader.Phrase = new Phrase("GRADE", body_bold_font); table2CellHeader.HorizontalAlignment = Element.ALIGN_CENTER; table2CellHeader.VerticalAlignment = Element.ALIGN_CENTER; bodyTable2.AddCell(table2CellHeader); table2CellHeader.Phrase = new Phrase("CHECK", body_bold_font); table2CellHeader.HorizontalAlignment = Element.ALIGN_CENTER; table2CellHeader.VerticalAlignment = Element.ALIGN_CENTER; bodyTable2.AddCell(table2CellHeader); for (int i = 1; i <= 30; i++) { for (int j = 0; j < Columns; j++) { string index = ""; if (j == 0) { index = i.ToString(); } table2CellHeader.Phrase = new Phrase(index, body_font); table2CellHeader.HorizontalAlignment = Element.ALIGN_CENTER; table2CellHeader.VerticalAlignment = Element.ALIGN_CENTER; bodyTable2.AddCell(table2CellHeader); } } PdfPCell signatureCell = new PdfPCell() { FixedHeight = 30, Colspan = 3 }; PdfPCell signatureBlankCell = new PdfPCell() { FixedHeight = 30 }; signatureCell.Phrase = new Phrase("PARAF CHECK", body_bold_font); signatureCell.HorizontalAlignment = Element.ALIGN_CENTER; signatureCell.VerticalAlignment = Element.ALIGN_CENTER; bodyTable2.AddCell(signatureCell); for (int j = 3; j < Columns; j++) { signatureBlankCell.Phrase = new Phrase("", body_font); signatureBlankCell.HorizontalAlignment = Element.ALIGN_CENTER; signatureBlankCell.VerticalAlignment = Element.ALIGN_CENTER; bodyTable2.AddCell(signatureBlankCell); } PdfPCell bottomCell = new PdfPCell() { FixedHeight = 40, Colspan = 3 }; PdfPCell bottomBlankCell = new PdfPCell() { FixedHeight = 40 }; bottomCell.Phrase = new Phrase("KETERANGAN", body_bold_font); bottomCell.HorizontalAlignment = Element.ALIGN_CENTER; bottomCell.VerticalAlignment = Element.ALIGN_CENTER; bodyTable2.AddCell(bottomCell); for (int j = 3; j < Columns; j++) { bottomBlankCell.Phrase = new Phrase("", body_font); bottomBlankCell.HorizontalAlignment = Element.ALIGN_CENTER; bottomBlankCell.VerticalAlignment = Element.ALIGN_CENTER; bodyTable2.AddCell(bottomBlankCell); } document.Add(bodyTable2); #endregion Table 2 document.Close(); byte[] byteInfo = stream.ToArray(); stream.Write(byteInfo, 0, byteInfo.Length); stream.Position = 0; return(stream); }
// GET: Graph public ActionResult Graph() { var spList = _context.SP.ToList(); var knbs = _context.Kanban.ToList(); var viewModel = new KanbanViewModel { TasksList = knbs, StatusPriorities = spList }; var selectY = (from k in viewModel.TasksList where k.Status == "Done" select k).ToList().Count; //Done List <StackedColumnChartData> chartData = new List <StackedColumnChartData> { new StackedColumnChartData { x = "Completed", y = selectY } }; ViewBag.dataSource = chartData; //In Progress var selectY1 = (from k in viewModel.TasksList where k.Status == "In Progress" select k).ToList().Count; List <StackedColumnChartData> chartData1 = new List <StackedColumnChartData> { new StackedColumnChartData { x = "Pending", y = selectY1 }, }; ViewBag.dataSource1 = chartData1; //Open var selectY2 = (from k in viewModel.TasksList where k.Status == "Open" select k).ToList().Count; List <StackedColumnChartData> chartData2 = new List <StackedColumnChartData> { new StackedColumnChartData { x = "Pending", y = selectY2 }, }; ViewBag.dataSource2 = chartData2; //Review var selectY3 = (from k in viewModel.TasksList where k.Status == "Review" select k).ToList().Count; List <StackedColumnChartData> chartData3 = new List <StackedColumnChartData> { new StackedColumnChartData { x = "Pending", y = selectY3 }, }; ViewBag.dataSource3 = chartData3; //Validate var selectY4 = (from k in viewModel.TasksList where k.Status == "Validate" select k).ToList().Count; List <StackedColumnChartData> chartData4 = new List <StackedColumnChartData> { new StackedColumnChartData { x = "Pending", y = selectY4 } }; ViewBag.dataSource4 = chartData4; return(View()); }
// GET: Kanban public ActionResult ViewBoard(string boardcode) { Board board; if (boardcode == null) { int boardId = this.GetLastViewedBoardId(User.Identity.Name); board = boardRepository.Detail(boardId); } else { board = boardRepository.Boards.Where(b => b.Code == boardcode).FirstOrDefault(); if (board != null) { board = boardRepository.Detail(board.ID); } } if (!KanbanService.GetInstance().CheckBoardValid(board, User.Identity.Name)) { board = null; } if (board != null) { // Build the model for VIEW var listTask = wRepository.Worktasks .Where(t => ((t.BoardID == board.ID) && (t.ActualEndDate != null && t.ActualEndDate.Value.AddDays(7) > DateTime.Now || t.ActualEndDate == null))) .GroupBy(w => w.Status) .Select(g => new { Status = g.Key, List = g .Select(gr => new WorktaskSimpleModel { WorktaskID = gr.WorktaskID, Title = gr.Title, Description = gr.Description, Identify = gr.Identify, StartDate = gr.PlannedStartDate, EndDate = gr.PlannedEndDate, Assignee = gr.AssigneeAcc, Priority = gr.Priority, TaskType = gr.TaskType, Status = gr.Status }) }).ToList(); Workflow wf = board.Workflow; var kanbanModel = new KanbanViewModel(); kanbanModel.Board = new KanbanInfoModel { Id = board.ID, Title = board.Title, Code = board.Code, BoardMemberList = board.Members.Select(m => m.UID.ToString()).ToArray(), Owner = board.Owner, Workflow = wf }; kanbanModel.BoardCode = board.Code; kanbanModel.TaskLists = new Dictionary <int, IList <WorktaskSimpleModel> >(); foreach (State state in wf.States) { var taskListByState = listTask.Where(t => t.Status == state.ID).Select(p => p.List).FirstOrDefault(); kanbanModel.TaskLists.Remove(state.ID); kanbanModel.TaskLists.Add(state.ID, (taskListByState != null) ? taskListByState.ToList() : new List <WorktaskSimpleModel>()); } this.Response.Cookies.Remove(User.Identity.Name + "lastviewedboard"); this.Response.Cookies.Add(new System.Web.HttpCookie(User.Identity.Name + "lastviewedboard", board.ID.ToString())); this.Response.Cookies.Get(User.Identity.Name + "lastviewedboard").Expires = DateTime.Now.AddDays(1); return(View(kanbanModel)); } else { return(this.RedirectToAction("Index")); } }
public PartialViewResult List(KanbanViewModel viewModel) { Board board; string boardcode = viewModel.BoardCode; if (boardcode == null) { int boardId = this.GetLastViewedBoardId(User.Identity.Name); board = boardRepository.Detail(boardId); } else { board = boardRepository.Boards.Where(b => b.Code == boardcode).FirstOrDefault(); if (board != null) { board = boardRepository.Detail(board.ID); } } if (!KanbanService.GetInstance().CheckBoardValid(board, User.Identity.Name)) { board = null; } IEnumerable <Worktask> filteredListTask; if (board != null) { filteredListTask = wRepository.Worktasks.Where(t => t.BoardID == board.ID); } else { filteredListTask = wRepository.Worktasks.Where(w => w.BoardID == 0); } if (viewModel.TaskType != null) { filteredListTask = filteredListTask.Where(t => t.TaskType == viewModel.TaskType); } if (viewModel.TaskPriority != null) { filteredListTask = filteredListTask.Where(t => t.Priority == viewModel.TaskPriority); } if (!String.IsNullOrEmpty(viewModel.AsigneeName)) { filteredListTask = filteredListTask.Where(t => t.AssigneeAcc.UserName.ToUpper().Contains(viewModel.AsigneeName.ToUpper()) || t.AssigneeAcc.DisplayName2.ToUpper().Contains(viewModel.AsigneeName.ToUpper())); } if (viewModel.PlanStartMax != null) { filteredListTask = filteredListTask.Where(t => t.PlannedStartDate <= viewModel.PlanStartMax); } if (viewModel.PlanStartMin != null) { filteredListTask = filteredListTask.Where(t => t.PlannedStartDate >= viewModel.PlanStartMin); } if (viewModel.PlanEndMax != null) { filteredListTask = filteredListTask.Where(t => t.PlannedEndDate <= viewModel.PlanEndMax); } if (viewModel.PlanEndMin != null) { filteredListTask = filteredListTask.Where(t => t.PlannedEndDate >= viewModel.PlanEndMin); } Workflow wf = board.Workflow; var kanbanModel = new KanbanViewModel(); var listTask = filteredListTask .GroupBy(w => w.Status) .Select(g => new { Status = g.Key, List = g .Select(gr => new WorktaskSimpleModel { WorktaskID = gr.WorktaskID, Title = gr.Title, Description = gr.Description, Identify = gr.Identify, StartDate = gr.PlannedStartDate, EndDate = gr.PlannedEndDate, Assignee = gr.AssigneeAcc, Priority = gr.Priority, TaskType = gr.TaskType, Status = gr.Status }) }).ToList(); kanbanModel.Board = new KanbanInfoModel { Id = board.ID, Title = board.Title, Code = board.Code, BoardMemberList = board.Members.Select(m => m.UID.ToString()).ToArray(), Owner = board.Owner, Workflow = wf }; kanbanModel.TaskLists = new Dictionary <int, IList <WorktaskSimpleModel> >(); foreach (State state in wf.States) { var taskListByState = listTask.Where(t => t.Status == state.ID).Select(p => p.List).FirstOrDefault(); kanbanModel.TaskLists.Remove(state.ID); kanbanModel.TaskLists.Add(state.ID, (taskListByState != null) ? taskListByState.ToList() : new List <WorktaskSimpleModel>()); } return(PartialView("_Kanban", kanbanModel)); }