/// <summary> /// Get the job. There's 3 types. Load from file, from noise, and save to file /// </summary> /// <param name="adjustment"></param> /// <returns></returns> protected override ApetureJobHandle getJob(Adjustment adjustment) { IAdjustmentJob job; if (adjustment.type == FocusAdjustmentType.InFocus) { if (LevelDAO.ChunkFileExists(adjustment.chunkID, lens.level)) { job = new LevelDAO.LoadChunkDataFromFileJob(adjustment, lens.level); // if there's no file, we need to generate the chunk data from scratch } else { job = StaticBiomeMap.GetTerrainGenerationJob(adjustment, lens.level); } /// if it's out of focus, we want to save the chunk to file } else { Chunk chunkToSave = lens.level.getChunk(adjustment.chunkID); if (chunkToSave.currentResolution != Chunk.Resolution.UnLoaded) { job = new LevelDAO.SaveChunkDataToFileJob(adjustment, lens.level); } else { throw new System.MissingMemberException( $"VoxelDataAperture is trying to save chunk data for {adjustment.chunkID} but could not find the chunk data in the level" ); } } return(new ApetureJobHandle(job, onJobComplete)); }
/// <summary> /// Schedule the job for loading new data from file /// </summary> /// <param name="chunkID"></param> /// <returns></returns> public override ApertureJobHandle getJobFor(Chunk.ID chunkID, FocusAdjustmentType adjustmentType) { IJob job; if (adjustmentType == FocusAdjustmentType.InFocus) { if (LevelDAO.ChunkFileExists(chunkID, level)) { job = new LevelDAO.LoadChunkDataFromFileJob(chunkID, level.name); // if there's no file, we need to generate the chunk data from scratch } else { job = BiomeMap.GetTerrainGenerationJob(chunkID, level); } /// if it's out of focus, we want to save the chunk to file } else if (level.chunks.TryGetValue(chunkID, out Chunk chunkToSave)) { job = new LevelDAO.SaveChunkDataToFileJob(chunkID, level.name, chunkToSave.getVoxels(), chunkToSave.solidVoxelCount); } else { throw new System.MissingMemberException( $"VoxelDataAperture is trying to save chunk data for {chunkID} but could not find the chunk data in the level" ); } return(new ApertureJobHandle(job, this)); }
public frmLevel(DBConnection conn, frmMenuUtama frmMU) { InitializeComponent(); try { lvDAO = new LevelDAO(conn.GetConnection()); loadDataLevel(); this.frmMU = frmMU; frmMUEnbDis(false); } catch (Exception ex) { errorDBox(ex.Message.ToString(), "frmLevel_Constructor"); } }
public async Task <ActionResult> Import(FormCollection formCollection) { HttpPostedFileBase file = Request.Files["UploadedFile"]; var datasList = new List <UploadDataVM>(); //var datasList2 = new List<UploadDataVM2>(); if ((file != null) && (file.ContentLength > 0) && !string.IsNullOrEmpty(file.FileName)) { string fileName = file.FileName; string fileContentType = file.ContentType; byte[] fileBytes = new byte[file.ContentLength]; var data = file.InputStream.Read(fileBytes, 0, Convert.ToInt32(file.ContentLength)); using (var package = new ExcelPackage(file.InputStream)) { var currentSheet = package.Workbook.Worksheets; var workSheet = currentSheet.First(); var noOfCol = workSheet.Dimension.End.Column; var noOfRow = workSheet.Dimension.End.Row; for (int rowIterator = 2; rowIterator <= noOfRow; rowIterator++) { var item = new UploadDataVM(); item.KPILevelCode = workSheet.Cells[rowIterator, 1].Value.ToSafetyString().ToUpper(); //item.KPIName = workSheet.Cells[rowIterator, 2].Value.ToSafetyString().ToUpper(); item.Value = workSheet.Cells[rowIterator, 3].Value.ToSafetyString(); item.TargetValue = workSheet.Cells[rowIterator, 4].Value.ToString() ?? "0"; item.PeriodValue = workSheet.Cells[rowIterator, 5].Value.ToInt(); item.Year = workSheet.Cells[rowIterator, 6].Value.ToInt(); //item.Area = workSheet.Cells[rowIterator, 7].Value.ToSafetyString(); //item.UpdateTime = workSheet.Cells[rowIterator, 8].Value.ToSafetyString().Trim(); //item.Remark = workSheet.Cells[rowIterator, 8].Value.ToSafetyString(); item.CreateTime = DateTime.Now; datasList.Add(item); } } var userprofile = Session["UserProfile"] as UserProfileVM; var model = await _dao.ImportData(datasList, userprofile.User.Alias, userprofile); NotificationHub.SendNotifications(); if (model.ListDataSuccess.Count > 0) { string content2 = System.IO.File.ReadAllText(Server.MapPath("~/Templates/UploadSuccessfully.html")); content2 = content2.Replace("{{{content}}}", "<b style='color:green'>Upload Data Successfully!</b><br/> Dear Updater, <br/> You just uploaded the KPIs as below list: "); var html2 = string.Empty; foreach (var item in model.ListDataSuccess.DistinctBy(x => x.KPIName)) { var area = new LevelDAO().GetNode(item.KPILevelCode); html2 += @"<tr> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{area}}</td> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{code}}</td> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{kpiname}}</td> </tr>" .Replace("{{area}}", area) .Replace("{{code}}", item.KPILevelCode) .Replace("{{kpiname}}", item.KPIName); } var url = "http://" + Request.Url.Host + ":" + Request.Url.Port + "/workplace"; string from = ConfigurationManager.AppSettings["FromEmailAddress"].ToSafetyString(); content2 = content2.Replace("{{{html-template}}}", html2).Replace("{{{href}}}", url); Commons.SendMail(model.ListSendMail, "[KPI System] Upload Data succesfully!", content2, "Upload Data succesfully!"); } if (model.ListUploadKPIVMs.Count > 0) { string content = System.IO.File.ReadAllText(Server.MapPath("~/Templates/BelowTarget.html")); content = content.Replace("{{{content}}}", @"<b style='color:red'>Below Target!</b><br/>Dear Owner, <br/>Please add your comment and action plan because you did not archive kpi target as below list:"); var html = string.Empty; foreach (var item in model.ListUploadKPIVMs) { var area = new LevelDAO().GetNode(item.KPILevelCode); if (item.Week > 0) { html += @"<tr> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{area}}</td> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{code}}</td> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{kpiname}}</td> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{week}}</td> </tr>" .Replace("{{area}}", area) .Replace("{{code}}", item.KPILevelCode) .Replace("{{kpiname}}", item.KPIName) .Replace("{{week}}", "Week " + item.Week.ToSafetyString()); } if (item.Month > 0) { html += @"<tr> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{area}}</td> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{code}}</td> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{kpiname}}</td> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{month}}</td> </tr>" .Replace("{{area}}", area) .Replace("{{code}}", item.KPILevelCode) .Replace("{{kpiname}}", item.KPIName) .Replace("{{month}}", "Month " + item.Month.ToSafetyString()); } if (item.Quarter > 0) { html += @"<tr> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{area}}</td> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{code}}</td> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{kpiname}}</td> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{quarter}}</td> </tr>" .Replace("{{area}}", area) .Replace("{{code}}", item.KPILevelCode) .Replace("{{kpiname}}", item.KPIName) .Replace("{{quarter}}", "Quarter " + item.Quarter.ToSafetyString()); } if (item.Year > 0) { html += @"<tr> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{area}}</td> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{code}}</td> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{kpiname}}</td> <td valign='top' style='padding:5px; font-family: Arial,sans-serif; font-size: 16px; line-height:20px;'>{{year}}</td> </tr>" .Replace("{{area}}", area) .Replace("{{code}}", item.KPILevelCode) .Replace("{{kpiname}}", item.KPIName) .Replace("{{year}}", "Year " + item.Year.ToSafetyString()); } } var url = "http://" + Request.Url.Host + ":" + Request.Url.Port + "/workplace"; string from = ConfigurationManager.AppSettings["FromEmailAddress"].ToSafetyString(); content = content.Replace("{{{html-template}}}", html).Replace("{{{href}}}", url); Commons.SendMail(model.ListSendMail, "[KPI System] Below Target", content, "Below Target"); //signalR return(Json(model.Status, JsonRequestBehavior.AllowGet)); } return(Json(model.Status, JsonRequestBehavior.AllowGet)); } return(Json(false, JsonRequestBehavior.AllowGet)); }
public ActionResult ExcelExport(int userid) { var model = _dao.DataExport(userid); var currentYear = DateTime.Now.Year; var currentWeek = DateTime.Now.GetIso8601WeekOfYear(); var currentMonth = DateTime.Now.Month; var currentQuarter = DateTime.Now.GetQuarter(); var now = DateTime.Now; var end = now.GetEndOfQuarter(); var tt = end.Subtract(now).Days; //var targetValue = ""; DataTable Dt = new DataTable(); Dt.Columns.Add("KPILevel Code", typeof(string)); Dt.Columns.Add("KPI Name", typeof(string)); Dt.Columns.Add("Actual Value", typeof(string)); Dt.Columns.Add("Target Value", typeof(object)); Dt.Columns.Add("Period Value", typeof(string)); Dt.Columns.Add("Year", typeof(int)); Dt.Columns.Add("OC", typeof(string)); Dt.Columns.Add("Update Time", typeof(object)); Dt.Columns.Add("Start Date", typeof(string)); Dt.Columns.Add("End Date", typeof(string)); foreach (var item in model) { var oc = new LevelDAO().GetNode(item.KPILevelCode); // Logic export tuần if (item.StateW == true) { for (int i = 1; i <= currentWeek; i++) { var startDayOfWeek = CodeUtility.ToGetMondayOfWeek(currentYear, i).ToString("MM/dd/yyyy"); var endDayOfWeek = CodeUtility.ToGetSaturdayOfWeek(currentYear, i).ToString("MM/dd/yyyy"); var updateTimeW = item.UploadTimeW.ConvertNumberDayOfWeekToString() + ", Week " + i; var target = _dao.GetTargetData(item.KPILevelCode, "W", i); var value = _dao.GetValueData(item.KPILevelCode, "W", i); Dt.Rows.Add(item.KPILevelCode + "W", item.KPIName, value, target, i, currentYear, oc, updateTimeW, startDayOfWeek, endDayOfWeek); } } ///Logic export tháng if (item.StateM == true) { var updateTimeM = item.UploadTimeM.ToStringDateTime("MM/dd/yyyy"); for (int i = 1; i <= currentMonth; i++) { var startDayOfMonth = CodeUtility.ToGetStartDateOfMonth(currentYear, i).ToString("MM/dd/yyyy"); var endDayOfMonth = CodeUtility.ToGetEndDateOfMonth(currentYear, i).ToString("MM/dd/yyyy"); var value = _dao.GetValueData(item.KPILevelCode, "M", i); var target = _dao.GetTargetData(item.KPILevelCode, "M", i); Dt.Rows.Add(item.KPILevelCode + "M", item.KPIName, value, target, i, currentYear, oc, updateTimeM, startDayOfMonth, endDayOfMonth); } } ///Logic export quý if (item.StateQ == true) { var updateTimeQ = item.UploadTimeQ.ToStringDateTime("MM/dd/yyyy"); for (int i = 1; i <= currentQuarter; i++) { var seq = CodeUtility.ToGetStartAndEndDateOfQuarter(currentYear, i); var value = _dao.GetValueData(item.KPILevelCode, "Q", i); var target = _dao.GetTargetData(item.KPILevelCode, "Q", i); Dt.Rows.Add(item.KPILevelCode + "Q", item.KPIName, value, target, i, currentYear, oc, updateTimeQ, seq.start.ToString("MM/dd/yyyy"), seq.end.ToString("MM/dd/yyyy")); } } ///Logic export năm if (item.StateY == true) { var updateTimeY = item.UploadTimeY.ToStringDateTime("MM/dd/yyyy"); var sey = CodeUtility.ToGetStartAndEndDateOfYear(currentYear); for (int i = currentYear - 9; i <= currentYear; i++) { var value = _dao.GetValueData(item.KPILevelCode, "Y", currentYear); var target = _dao.GetTargetData(item.KPILevelCode, "Y", i); Dt.Rows.Add(item.KPILevelCode + "Y", item.KPIName, value, target, i, currentYear, oc, updateTimeY, sey.start.ToString("MM/dd/yyyy"), sey.end.ToString("MM/dd/yyyy")); } } } var memoryStream = new MemoryStream(); using (var excelPackage = new ExcelPackage(memoryStream)) { var worksheet = excelPackage.Workbook.Worksheets.Add("Sheet1"); worksheet.Cells["A1"].LoadFromDataTable(Dt, true, TableStyles.None); worksheet.Cells["A1:AN1"].Style.Font.Bold = true; worksheet.DefaultRowHeight = 18; worksheet.Column(2).Style.HorizontalAlignment = ExcelHorizontalAlignment.Left; worksheet.Column(6).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; worksheet.Column(7).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; worksheet.DefaultColWidth = 20; worksheet.Column(2).AutoFit(); Session["DownloadExcel_FileManager"] = excelPackage.GetAsByteArray(); return(Json("", JsonRequestBehavior.AllowGet)); } }
public ActionResult ExcelExport1(int userid) { var model = _dao.DataExport(userid); var currentYear = DateTime.Now.Year; var currentWeek = DateTime.Now.GetIso8601WeekOfYear(); var currentMonth = DateTime.Now.Month; var currentQuarter = DateTime.Now.GetQuarter(); var now = DateTime.Now; var end = now.GetEndOfQuarter(); var tt = end.Subtract(now).Days; //var targetValue = ""; DataTable Dt = new DataTable(); Dt.Columns.Add("KPILevel Code", typeof(string)); Dt.Columns.Add("KPI Name", typeof(string)); Dt.Columns.Add("Actual Value", typeof(string)); Dt.Columns.Add("Target Value", typeof(object)); Dt.Columns.Add("Period Value", typeof(string)); Dt.Columns.Add("Year", typeof(int)); Dt.Columns.Add("OC", typeof(string)); Dt.Columns.Add("Update Time", typeof(object)); Dt.Columns.Add("Start Date", typeof(string)); Dt.Columns.Add("End Date", typeof(string)); foreach (var item in model) { var oc = new LevelDAO().GetNode(item.KPILevelCode); ///Logic export tuần //Nếu tuần MAX trong bảng DATA mà bằng 0 thì export từ tuần đầu cho đến tuần hiện tại if (item.PeriodValueW == 0 && item.StateW == true) { for (int i = 1; i <= currentWeek; i++) { var startDayOfWeek = CodeUtility.ToGetMondayOfWeek(currentYear, i).ToString("MM/dd/yyyy"); var endDayOfWeek = CodeUtility.ToGetSaturdayOfWeek(currentYear, i).ToString("MM/dd/yyyy"); var updateTimeW = item.UploadTimeW.ConvertNumberDayOfWeekToString() + ", Week " + i; Dt.Rows.Add(item.KPILevelCode + "W", item.KPIName, item.Value, item.TargetValueW, i, currentYear, oc, updateTimeW, startDayOfWeek, endDayOfWeek); } } // nếu tuần hiện tại trừ tuần MAX >= 1 thì export từ tuần kế tiếp tuần MAX cho đến tuần hiện tại else if (item.PeriodValueW > 0 && item.StateW == true) { if (currentWeek - item.PeriodValueW >= 1) { for (int i = item.PeriodValueW + 1; i <= currentWeek; i++) { var startDayOfWeek = CodeUtility.ToGetMondayOfWeek(currentYear, i).ToString("MM/dd/yyyy"); var endDayOfWeek = CodeUtility.ToGetSaturdayOfWeek(currentYear, i).ToString("MM/dd/yyyy"); var updateTimeW = item.UploadTimeW.ConvertNumberDayOfWeekToString() + ", Week " + i; Dt.Rows.Add(item.KPILevelCode + "W", item.KPIName, item.Value, item.TargetValueW, i, currentYear, oc, updateTimeW, startDayOfWeek, endDayOfWeek); } } else { for (int i = 1; i <= currentWeek; i++) { var startDayOfWeek = CodeUtility.ToGetMondayOfWeek(currentYear, i).ToString("MM/dd/yyyy"); var endDayOfWeek = CodeUtility.ToGetSaturdayOfWeek(currentYear, i).ToString("MM/dd/yyyy"); var updateTimeW = item.UploadTimeW.ConvertNumberDayOfWeekToString() + ", Week " + i; var value = _dao.GetValueData(item.KPILevelCode, "W", i); Dt.Rows.Add(item.KPILevelCode + "W", item.KPIName, value, item.TargetValueW, i, currentYear, oc, updateTimeW, startDayOfWeek, endDayOfWeek); } } } ///Logic export tháng //Nếu tháng MAX trong bảng DATA mà bằng 0 thì export từ tháng đầu cho đến tháng hiện tại if (item.PeriodValueM == 0 && item.StateM == true) { for (int i = 1; i <= currentMonth; i++) { Dt.Rows.Add(item.KPILevelCode + "M", item.KPIName, item.Value, item.TargetValueW, i, currentYear, oc, item.UploadTimeM.ToSafetyString().Split(' ')[0].ToSafetyString()); } } // nếu tháng hiện tại trừ tháng MAX >= 1 thì export từ tháng kế tiếp tháng MAX cho đến tháng hiện tại if (item.PeriodValueM > 0 && item.StateM == true) { if (currentMonth - item.PeriodValueM > 1) { for (int i = item.PeriodValueM + 1; i <= currentMonth; i++) { Dt.Rows.Add(item.KPILevelCode + "M", item.KPIName, item.Value, item.TargetValueW, i, currentYear, oc, item.UploadTimeM.ToSafetyString().Split(' ')[0].ToSafetyString()); } } else { for (int i = 1; i <= currentMonth; i++) { var value = _dao.GetValueData(item.KPILevelCode, "M", i); Dt.Rows.Add(item.KPILevelCode + "M", item.KPIName, value, item.TargetValueW, i, currentYear, oc, item.UploadTimeM.ToSafetyString().Split(' ')[0].ToSafetyString()); } } } ///Logic export quý //Nếu quý MAX trong bảng DATA mà bằng 0 thì export từ tháng đầu cho đến quý hiện tại if (item.PeriodValueQ == 0 && item.StateQ == true) { for (int i = 1; i < currentQuarter; i++) { Dt.Rows.Add(item.KPILevelCode + "Q", item.KPIName, item.Value, item.TargetValueW, i, currentYear, oc, item.UploadTimeQ.ToSafetyString().Split(' ')[0].ToSafetyString()); } if (tt <= 30) { Dt.Rows.Add(item.KPILevelCode + "Q", item.KPIName, item.Value, item.TargetValueW, currentQuarter, currentYear, oc, item.UploadTimeQ.ToSafetyString().Split(' ')[0].ToSafetyString()); } } if (item.PeriodValueQ > 0 && item.StateQ == true) { //, Nếu quý hiện tại trừ quý MAX trong bảng DATA lớn hơn 1 thì //export từ quý 1 cho đến quý hiện tại if (currentQuarter - item.PeriodValueQ >= 1) { for (int i = item.PeriodValueQ; i <= currentQuarter; i++) { Dt.Rows.Add(item.KPILevelCode + "Q", item.KPIName, item.Value, item.TargetValueW, i, currentYear, oc, item.UploadTimeQ.ToSafetyString().Split(' ')[0].ToSafetyString()); } } else { for (int i = 1; i <= currentQuarter; i++) { var value = _dao.GetValueData(item.KPILevelCode, "Q", i); Dt.Rows.Add(item.KPILevelCode + "Q", item.KPIName, value, item.TargetValueW, i, currentYear, oc, item.UploadTimeQ.ToSafetyString().Split(' ')[0].ToSafetyString()); } } } ///Logic export năm //Nếu năm MAX trong bảng DATA == 0 thì export năm hiện tại if (item.PeriodValueY == 0 && item.StateY == true) { for (int i = currentYear - 10; i <= currentYear; i++) { Dt.Rows.Add(item.KPILevelCode + "Y", item.KPIName, item.Value, item.TargetValueW, i, currentYear, oc, item.UploadTimeY.ToSafetyString().Split(' ')[0].ToSafetyString()); } } if (item.PeriodValueY > 0 && item.StateY == true) { // nếu năm hiện tại - năm max trong bảng DATA > 1 thì export năm kế tiếp đến năm hiện tại if (currentYear - item.PeriodValueY >= 1) { for (int i = item.PeriodValueY + 1; i <= currentYear; i++) { Dt.Rows.Add(item.KPILevelCode + "Y", item.KPIName, item.Value, item.TargetValueW, i, currentYear, oc, item.UploadTimeY.ToSafetyString().Split(' ')[0].ToSafetyString()); } } else { for (int i = currentYear - 10; i <= currentYear; i++) { var value = _dao.GetValueData(item.KPILevelCode, "Y", i); Dt.Rows.Add(item.KPILevelCode + "Y", item.KPIName, value, item.TargetValueW, i, currentYear, oc, item.UploadTimeY.ToSafetyString().Split(' ')[0].ToSafetyString()); } } } } var memoryStream = new MemoryStream(); using (var excelPackage = new ExcelPackage(memoryStream)) { var worksheet = excelPackage.Workbook.Worksheets.Add("Sheet1"); worksheet.Cells["A1"].LoadFromDataTable(Dt, true, TableStyles.None); worksheet.Cells["A1:AN1"].Style.Font.Bold = true; worksheet.DefaultRowHeight = 18; worksheet.Column(2).Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Left; worksheet.Column(6).Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; worksheet.Column(7).Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; worksheet.DefaultColWidth = 20; worksheet.Column(2).AutoFit(); Session["DownloadExcel_FileManager"] = excelPackage.GetAsByteArray(); return(Json("", JsonRequestBehavior.AllowGet)); } }