public async Task GetQualificationsByProjectAsync(ChartDataViewModel viewModel) { var projectQualifications = await _context.ProjectQualifications.Include(x => x.Project).ToArrayAsync(); viewModel.ChartData = projectQualifications.GroupBy(x => x.Project.Name, x => x.QualificationId).ToDictionary(x => x.Key, x => x.Count()); viewModel.Label = "Qualifications by project"; }
public ChartDataView() { InitializeComponent(); ChartRoadsData = new Dictionary <Road, Dictionary <DateTime, int> >(); this.DataContext = new NetworkService.ViewModel.ChartDataViewModel(); Vm = (ChartDataViewModel)(this.DataContext); ListOfTbs.Add(0, Tb1); ListOfTbs.Add(1, Tb2); ListOfTbs.Add(2, Tb3); ListOfTbs.Add(3, Tb4); ListOfTbs.Add(4, Tb5); ListOfTbs.Add(5, Tb6); ListOfTbs.Add(6, Tb7); ListOfTbs.Add(7, Tb8); ListOfTbs.Add(8, Tb9); ListOfTbs.Add(9, Tb10); ListOfRects.Add(0, R1); ListOfRects.Add(1, R2); ListOfRects.Add(2, R3); ListOfRects.Add(3, R4); ListOfRects.Add(4, R5); ListOfRects.Add(5, R6); ListOfRects.Add(6, R7); ListOfRects.Add(7, R8); ListOfRects.Add(8, R9); ListOfRects.Add(9, R10); NotifiedVms.Instance.RegisterAction(ShowChartAction); }
public async Task GetSkillsByLevelAsync(ChartDataViewModel viewModel) { var qualifications = await _context.Qualifications.Include(x => x.Skill).ToArrayAsync(); viewModel.ChartData = qualifications.GroupBy(x => x.Level, x => x.Skill).ToDictionary(x => x.Key.ToString(), x => x.Count()); viewModel.Label = "Skills by level"; }
private async Task <ChartDataViewModel> SetTickerData(ChartDataViewModel model, int tradePairId) { using (var context = DataContextFactory.CreateContext()) { var timeLast = DateTime.UtcNow.AddHours(-24); var query = from tradepair in context.TradePair.Where(t => t.Id == tradePairId) from history in context.TradeHistory.Where(t => t.TradePairId == tradepair.Id && t.Timestamp > timeLast) .DefaultIfEmpty() .GroupBy(g => g.TradePairId) .Select(x => new { High = x.Max(j => j.Rate), Low = x.Min(j => j.Rate), Last = tradepair.LastTrade }) select new { High = (decimal?)history.High ?? tradepair.LastTrade, Low = (decimal?)history.Low ?? tradepair.LastTrade, Last = tradepair.LastTrade }; var data = await query.FirstOrDefaultNoLockAsync(); model.High = data.High; model.Low = data.Low; model.Last = data.Last; return(model); } }
public async Task GetProjectsPerManagerAsync(ChartDataViewModel viewModel) { var projects = await _context.Projects.Include(x => x.Manager).ToArrayAsync(); viewModel.ChartData = GetProjectsPerManager(projects); viewModel.Label = "Projects by manager"; }
public async Task GetResourcesByProjectAsync(ChartDataViewModel viewModel) { var projectResources = await _context.ProjectIdentityResources.Include(x => x.Project).ToArrayAsync(); viewModel.ChartData = projectResources.GroupBy(x => x.Project.Name, x => x.IdentityResourceId).ToDictionary(x => x.Key, x => x.Count()); viewModel.Label = "Resources by project"; }
public JsonResult ImplementacionApi(int location) { using (WebClient wc = new WebClient()) { var json = wc.DownloadString("http://127.0.0.1/scoreapb/api/datosapi?location=" + location); dynamic jsonObj = JsonConvert.DeserializeObject(json); RecomendacionesHogar = Int32.Parse(jsonObj["RecomendacionesHogar"].ToString()); DistanciaminetoFisico = Int32.Parse(jsonObj["DistanciaminetoFisico"].ToString()); Transporte = Int32.Parse(jsonObj["Transporte"].ToString()); Guantes = Int32.Parse(jsonObj["Guantes"].ToString()); Tabocas = Int32.Parse(jsonObj["Tabocas"].ToString()); LavadoManos = Int32.Parse(jsonObj["LavadoManos"].ToString()); UsuariosMatriculados = Int32.Parse(jsonObj["UsuariosMatriculados"].ToString()); PorcentajeRecomendacionesHogar = (RecomendacionesHogar * 100) / UsuariosMatriculados; PorcentajeDistanciaminetoFisico = (DistanciaminetoFisico * 100) / UsuariosMatriculados; PorcentajeTransporte = (Transporte * 100) / UsuariosMatriculados; PorcentajeGuantes = (Guantes * 100) / UsuariosMatriculados; PorcentajeTapabocas = (Tabocas * 100) / UsuariosMatriculados; PorcentajeLavadoManos = (LavadoManos * 100) / UsuariosMatriculados; PorcentajeTotal = ((RecomendacionesHogar + DistanciaminetoFisico + Transporte + Guantes + Tabocas + LavadoManos) * 100) / (UsuariosMatriculados * 6); } ChartDataViewModel datos = new ChartDataViewModel { title = "INDICADOR TRABAJADORES CERTIFICADOS", labels = new string[7] { "Recomendaciones Hogar", "Transporte", "Guantes", "Tapabocas", "Distanciamineto físico", "Lavado Manos", "Porcentaje Total" }, datasets = new List <ChartDatasetsViewModel> { new ChartDatasetsViewModel { label = "Avance porcentual %", data = new string[7] { PorcentajeRecomendacionesHogar.ToString(), PorcentajeTransporte.ToString(), PorcentajeGuantes.ToString(), PorcentajeTapabocas.ToString(), PorcentajeDistanciaminetoFisico.ToString(), PorcentajeLavadoManos.ToString(), PorcentajeTotal.ToString() }, fill = false, borderWidth = 1 }, } }; return(Json(datos, JsonRequestBehavior.AllowGet)); }
public JsonResult AvanceAutoevaluaciones(int Nitempresa) { List <ActiCumplimiento> lst = new List <ActiCumplimiento>(); try { var cumplimientos = db.Tb_ActiCumplimiento.Where(a => a.Empr_Nit == Nitempresa && a.Usersplandetrabajo.Any(u => u.PlandeTrabajo != null)).ToList(); if (cumplimientos != null && cumplimientos.Count > 0) { lst.AddRange(cumplimientos); } var ci = new CultureInfo("es-CO"); var ejecucion = lst.Where(a => !a.Finalizada).GroupBy(a => a.Acum_IniAct.ToString("MMMM", ci)).Select(a => a.Count()).Count(); var planeadas = lst.Count; var finalizadas = lst.Count - ejecucion; ChartDataViewModel datos = new ChartDataViewModel { title = "Alcance del plan de trabajo anual", labels = new string[3] { "Planeadas", "En Ejercucion", "Finalizadas" }, datasets = new List <ChartDatasetsViewModel> { new ChartDatasetsViewModel { label = "Porcentaje %", data = new string[3] { planeadas.ToString(), ejecucion.ToString(), finalizadas.ToString() }, fill = false, borderWidth = 1 }, } }; return(Json(datos, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { return(Json(ex, JsonRequestBehavior.AllowGet)); } }
public JsonResult AvanceAutoevaluaciones() { List <ActiCumplimiento> lst = new List <ActiCumplimiento>(); try { var cumplimientos = db.Tb_ActiCumplimiento.Where(a => a.Empr_Nit == AccountData.NitEmpresa && a.Usersplandetrabajo.Any(u => u.PlandeTrabajo != null)).ToList(); if (cumplimientos != null && cumplimientos.Count > 0) { lst.AddRange(cumplimientos); } var ci = new CultureInfo("es-CO"); ChartDataViewModel datos = new ChartDataViewModel { title = "Alcance del plan de trabajo anual", labels = lst.Select(a => a.Acum_IniAct.ToString("MMMM", ci)).Distinct().ToArray(), datasets = new List <ChartDatasetsViewModel> { new ChartDatasetsViewModel { label = "Planeadas", data = lst.GroupBy(a => a.Acum_IniAct.ToString("MMMM", ci)).Select(a => a.Count()).ToArray(), fill = false, borderWidth = 1 }, new ChartDatasetsViewModel { label = "En ejecución", data = lst.Where(a => !a.Finalizada).GroupBy(a => a.Acum_IniAct.ToString("MMMM", ci)).Select(a => a.Count()).ToArray(), fill = false, borderWidth = 1 } }, }; return(Json(datos, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { return(Json(ex, JsonRequestBehavior.AllowGet)); } }
public async Task <IViewComponentResult> InvokeAsync(int sensor, DateTime from, DateTime to) { var model = new ChartDataViewModel() { SensorId = sensor, Data = await _context.SensorData .Where(x => x.SensorId == sensor && x.Timestamp >= from && x.Timestamp <= to) .OrderBy(x => x.Timestamp) .Select(x => new SensorDataViewModel(sensor, x.Timestamp, x.Value)) .ToListAsync() }; // TODO: tohle nejak udelat uz pri nacitani z DB. Nebo jeste lepe udelat nejakou intepolaci var indexModulo = Math.Ceiling(model.Data.Count() / (float)MAX_SAMPLES_COUNT); model.Data = model.Data.Where((x, index) => index % indexModulo == 0); return(View("~/Views/Sensors/Components/DataChartComponent.cshtml", model)); }
public async Task <ActionResult> ChartData(ChartDataViewModel model) { ChartDataResponse resModel = null; using (var client = new HttpClient()) { client.BaseAddress = new Uri(ConfigurationManager.AppSettings["BaseUrl"]); client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var json = JsonConvert.SerializeObject(model); var content = new StringContent(json, Encoding.UTF8, "application/json"); HttpResponseMessage Res = await client.PostAsync("api/CompanyDashboardAPI/ChartData", content); if (Res.IsSuccessStatusCode) { resModel = JsonConvert.DeserializeObject <ChartDataResponse>(Res.Content.ReadAsStringAsync().Result); } } return(Json(resModel, JsonRequestBehavior.AllowGet)); }
public async Task <IActionResult> SummaryChartData(ChartDataViewModel viewModel) { if (viewModel.ButtonType == ButtonType.Project) { await _summaryService.GetProjectsPerManagerAsync(viewModel); } if (viewModel.ButtonType == ButtonType.Qualification) { await _summaryService.GetQualificationsByProjectAsync(viewModel); } if (viewModel.ButtonType == ButtonType.Resource) { await _summaryService.GetResourcesByProjectAsync(viewModel); } if (viewModel.ButtonType == ButtonType.Skill) { await _summaryService.GetSkillsByLevelAsync(viewModel); } return(View("Summary", viewModel)); }
public IHttpActionResult ChartData(int year) { var result = new List <ChartDataViewModel>(); // Выполненные в текущем году var tasks = UnitOfWork.Repository <Task>() .GetQ(filter: x => x.CreatedAt.HasValue && x.CreatedAt.Value.Year == year, includeProperties: "CrashType, Employee, Employee.Person, SpareParts"); var data = tasks .GroupBy(g => g.CreatedAt.Value.Month) .Select(x => new { Month = x.Key, Count = x.Count() }); var months = Enumerable.Range(1, 12); var currentYear = months.GroupJoin(data, m => m, d => d.Month, (m, g) => g .Select(r => new KeyValuePair <int, int>(m, r.Count)) .DefaultIfEmpty(new KeyValuePair <int, int>(m, 0)) ) .SelectMany(g => g) .Select(x => x.Value); var currentYearData = new ChartDataViewModel { name = year + "г.", data = currentYear }; // Выполненные в прошлом году tasks = UnitOfWork.Repository <Task>() .GetQ(filter: x => x.CreatedAt.HasValue && x.CreatedAt.Value.Year == year - 1, includeProperties: "CrashType, Employee, Employee.Person, SpareParts"); data = tasks .GroupBy(g => g.CreatedAt.Value.Month) .Select(x => new { Month = x.Key, Count = x.Count() }); months = Enumerable.Range(1, 12); var previousYear = months.GroupJoin(data, m => m, d => d.Month, (m, g) => g .Select(r => new KeyValuePair <int, int>(m, r.Count)) .DefaultIfEmpty(new KeyValuePair <int, int>(m, 0)) ) .SelectMany(g => g) .Select(x => x.Value); var previousYearData = new ChartDataViewModel { name = (year - 1) + "г.", data = previousYear }; result.Add(previousYearData); result.Add(currentYearData); return(Ok(result)); }
public ActionResult GetChartData() { List <int> test1 = new List <int>(); test1.Add(1000); test1.Add(2000); test1.Add(2500); test1.Add(2000); test1.Add(3500); test1.Add(4000); test1.Add(6000); test1.Add(4000); List <int> test2 = new List <int>(); test2.Add(3000); test2.Add(4000); test2.Add(4000); test2.Add(3000); test2.Add(5000); test2.Add(4000); test2.Add(2000); test2.Add(3000); ChartDataViewModel data1 = new ChartDataViewModel(); data1.SeriesName = "series1"; data1.SeriesData = test1; ChartDataViewModel data2 = new ChartDataViewModel(); data2.SeriesName = "series2"; data2.SeriesData = test2; //List<dynamic> data = new List<dynamic>(); List <ChartDataViewModel> data = new List <ChartDataViewModel>(); data.Add(data1); data.Add(data2); return(Json(data, JsonRequestBehavior.AllowGet)); //List<int> test1 = new List<int>(); //test1.Add(1000); //test1.Add(2000); //test1.Add(3000); //test1.Add(2000); //test1.Add(5000); //test1.Add(4000); //test1.Add(6000); //test1.Add(4000); //List<int> test2 = new List<int>(); //test2.Add(3000); //test2.Add(4000); //test2.Add(4000); //test2.Add(3000); //test2.Add(5000); //test2.Add(4000); //test2.Add(2000); //test2.Add(3000); ////List<dynamic> data = new List<dynamic>(); //List<List<int>> data = new List<List<int>>(); //data.Add(test1); //data.Add(test2); //return Json(data, JsonRequestBehavior.AllowGet); }
public async Task <IActionResult> Dashboard() { var currentUser = await GetCurrentUserAsync(); TotalBudgetViewModel TotalModel = new TotalBudgetViewModel(); var budget = await _context.Budget.Include(b => b.BudgetCategory) .ThenInclude(bc => bc.BudgetItem) .Where(b => b.User == currentUser && b.IsActive).FirstOrDefaultAsync(); if (budget == null || budget.BudgetCategory.Count == 0) { return(RedirectToAction("Index", "Budgets")); } if (budget.StartDate > DateTime.Now || budget.EndDate < DateTime.Now) { return(RedirectToAction("Index", "Budgets")); } var budgetItems = await _context.BudgetItem .Include(b => b.BudgetCategory) .ThenInclude(bc => bc.Budget) .Where(bi => bi.BudgetCategory.Budget == budget).ToListAsync(); var cost = budgetItems.Select(c => c.Cost).Sum(); TotalModel.Budget = budget; TotalModel.AmountSpent = cost; ViewData["BudgetCategoryId"] = new SelectList(budget.BudgetCategory, "BudgetCategoryId", "Name"); decimal costIfZero() { if (cost == 0) { // perform the division only if cost is different than 0, return(1); } else { return(cost); } } int zeroDay() { if (TotalModel.DaysSinceStart() == 0) { return(1); } else { return(TotalModel.DaysSinceStart()); } } foreach (BudgetCategory bc in budget.BudgetCategory) { var categoryCost = await _context.BudgetItem .Where(bi => bi.BudgetCategoryId == bc.BudgetCategoryId) .Select(bi => bi.Cost).ToListAsync(); CategoryViewModel CategoryModel = new CategoryViewModel() { BudgetCategory = bc, TotalDays = TotalModel.TotalDays(), DaysRemaining = TotalModel.TotalDays() - TotalModel.DaysSinceStart(), TotalSpent = categoryCost.Sum(), }; TotalModel.CategoryViewModels.Add(CategoryModel); ChartDataViewModel ChartData = new ChartDataViewModel() { xValue = bc.Name, yValue = (double)(categoryCost.Sum() / costIfZero()), text = (categoryCost.Sum() / costIfZero()).ToString("P") }; TotalModel.ChartDataModels.Add(ChartData); ChartDataViewModel ChartData1 = new ChartDataViewModel() { xValue = bc.Name, PerDay = (double)bc.BudgetPerDay }; TotalModel.ChartDataModels1.Add(ChartData1); ChartDataViewModel ChartData2 = new ChartDataViewModel() { xValue = bc.Name, PerDay = (double)categoryCost.Sum() / zeroDay() }; TotalModel.ChartDataModels2.Add(ChartData2); } return(View(TotalModel)); }
public JsonResult ImplementacionPHVAPlanear(int Nitempresa) { TipoEmpresa tipoEmpresa = new TipoEmpresa(); if (Nitempresa != 0) { Empresa empresa = db.Tb_Empresa.Find(Nitempresa); tipoEmpresa = empresa.TipoEmpresa; if (empresa.Empr_Ttrabaja > 0 && (tipoEmpresa == null || tipoEmpresa.Categoria < 3)) { tipoEmpresa = db.Tb_TipoEmpresa.FirstOrDefault(t => t.RangoMinimoTrabajadores <= empresa.Empr_Ttrabaja && t.RangoMaximoTrabajadores >= empresa.Empr_Ttrabaja); } } AutoEvaluacionAfp evaluacion = db.Tb_AutoEvaluacionAfp .Where(a => a.Empr_Nit == Nitempresa && a.CumplimientosAfp.Count > 0) .OrderByDescending(a => a.Auev_Inicio) .FirstOrDefault(); decimal[] lst = new decimal[0]; string[] labels = new string[0]; if (evaluacion != null) { var values = db.Tb_ItemEstandarAfp .Where(ie => tipoEmpresa.Categoria == 0 || (ie.Categoria <= tipoEmpresa.Categoria && ie.CategoriaExcepcion != tipoEmpresa.Categoria && ie.CategoriaExcepcion != tipoEmpresa.Categoria)) .GroupBy(a => a.EstandarAfp.CriterioAfp.CicloPHVAAfp).Select(a => new { key = a.Key.Id, value = (decimal)a.Count(), name = a.Key.Nombre }) .ToArray(); labels = values.Where(v => v.name == "1. Planear").Select(v => v.name).ToArray(); var temp = db.Tb_cumplimientoAfp .Where(a => a.Auevafp_Id == evaluacion.Auevafp_Id && (a.Cump_Cumple || a.Cump_Justifica)) .GroupBy(a => a.ItemEstandarAfp.EstandarAfp.CriterioAfp.CicloPHVAAfp).Select(a => new { key = a.Key.Id, value = (decimal)a.Where(e => e.Cump_Cumple || e.Cump_Justifica).Count() }) .ToArray(); lst = new decimal[values.Length]; lst[0] = 0; var flag = 0; for (int i = 0; i < values.Length; i++) { var val = temp.FirstOrDefault(v => v.key == values[i].key); if (val != null) { if (values[i].name == "1. Planear") { lst[0] = Decimal.Round((val.value * 100 / values[i].value), 1); flag = 1; } if (flag == 1) { lst[0 + 1] = 100 - lst[0]; flag = 2; } } } } ChartDataViewModel datos = new ChartDataViewModel { title = "1. Planear PBA", labels = labels, datasets = new List <ChartDatasetsViewModel> { new ChartDatasetsViewModel { label = "Avance porcentual %", data = lst, fill = false, borderWidth = 1 }, } }; return(Json(datos, JsonRequestBehavior.AllowGet)); }
public JsonResult PromedioAutoevaluaciones() { TipoEmpresa tipoEmpresa = new TipoEmpresa(); if (AccountData.NitEmpresa != 0) { Empresa empresa = db.Tb_Empresa.Find(AccountData.NitEmpresa); tipoEmpresa = empresa.TipoEmpresa; if (empresa.Empr_Ttrabaja > 0 && (tipoEmpresa == null || tipoEmpresa.Categoria < 3)) { tipoEmpresa = db.Tb_TipoEmpresa.FirstOrDefault(t => t.RangoMinimoTrabajadores <= empresa.Empr_Ttrabaja && t.RangoMaximoTrabajadores >= empresa.Empr_Ttrabaja); } } AutoEvaluacion evaluacion = db.Tb_AutoEvaluacion .Where(a => a.Empr_Nit == AccountData.NitEmpresa && a.Cumplimientos.Count > 0 && a.Finalizada) .OrderByDescending(a => a.Auev_Inicio) .FirstOrDefault(); decimal[] lst = new decimal[0]; string[] labels = new string[0]; if (evaluacion != null) { var values = db.Tb_ItemEstandar .Where(ie => tipoEmpresa.Categoria == 0 || (ie.Categoria <= tipoEmpresa.Categoria && ie.CategoriaExcepcion != tipoEmpresa.Categoria && ie.CategoriaExcepcion != tipoEmpresa.Categoria)) .GroupBy(a => a.Estandar.Criterio.CicloPHVA).Select(a => new { key = a.Key.Id, value = (decimal)a.Count(), name = a.Key.Nombre }) .ToArray(); labels = values.Select(v => v.name).ToArray(); var temp = db.Tb_Cumplimiento .Where(a => a.Auev_Id == evaluacion.Auev_Id && (a.Cump_Cumple || a.Cump_Justifica)) .GroupBy(a => a.ItemEstandar.Estandar.Criterio.CicloPHVA).Select(a => new { key = a.Key.Id, value = (decimal)a.Where(e => e.Cump_Cumple || e.Cump_Justifica).Count() }) .ToArray(); lst = new decimal[values.Length]; for (int i = 0; i < values.Length; i++) { var val = temp.FirstOrDefault(v => v.key == values[i].key); if (val != null) { lst[i] = Decimal.Round((val.value * 100 / values[i].value), 1); } } } ChartDataViewModel datos = new ChartDataViewModel { title = "Medición del ciclo PHVA", labels = labels, datasets = new List <ChartDatasetsViewModel> { new ChartDatasetsViewModel { label = "Avance porcentual %", data = lst, fill = false, borderWidth = 1 } }, }; return(Json(datos, JsonRequestBehavior.AllowGet)); }
public JsonResult UltimaAutoevaluacion() { TipoEmpresa tipoEmpresa = new TipoEmpresa(); if (AccountData.NitEmpresa != 0) { Empresa empresa = db.Tb_Empresa.Find(AccountData.NitEmpresa); tipoEmpresa = empresa.TipoEmpresa; if (empresa.Empr_Ttrabaja > 0 && (tipoEmpresa == null || tipoEmpresa.Categoria < 3)) { tipoEmpresa = db.Tb_TipoEmpresa.FirstOrDefault(t => t.RangoMinimoTrabajadores <= empresa.Empr_Ttrabaja && t.RangoMaximoTrabajadores >= empresa.Empr_Ttrabaja); } } decimal total = db.Tb_ItemEstandar .Where(ie => tipoEmpresa.Categoria == 0 || (ie.Categoria <= tipoEmpresa.Categoria && ie.CategoriaExcepcion != tipoEmpresa.Categoria && ie.CategoriaExcepcion != tipoEmpresa.Categoria)).Count(); decimal terminadas = 0; if (AccountData.NitEmpresa > 0) { AutoEvaluacion evaluacion = db.Tb_AutoEvaluacion .Where(a => a.Empr_Nit == AccountData.NitEmpresa && a.Cumplimientos.Count > 0 && a.Finalizada) .OrderByDescending(a => a.Auev_Inicio) .FirstOrDefault(); if (evaluacion != null) { terminadas = db.Tb_Cumplimiento .Count(a => a.Auev_Id == evaluacion.Auev_Id && (a.Cump_Cumple || a.Cump_Justifica)); } } ChartDataViewModel datos = new ChartDataViewModel { title = "Cumplimiento SG-SST", labels = new string[2] { "Cumplido", "No cumplido" }, datasets = new List <ChartDatasetsViewModel> { new ChartDatasetsViewModel { label = "Estado actividades %", data = new string[2] { String.Format("{0:0}", Convert.ToInt32((terminadas * 100) / total)), String.Format("{0:0}", Convert.ToInt32(((total - terminadas) * 100) / total)) }, fill = true, borderWidth = 1, backgroundColor = new string[2] { "#6DB52D", "#AE2429" }, borderColor = new string[2] { "#6DB52D", "#AE2429" } } } }; return(Json(datos, JsonRequestBehavior.AllowGet)); }