private void UpdateKPI(FUpdateStockValue values) { var lastTime = 0; var lastValue = StockValuesOverTime.FindAll(x => x.Name == values.ArticleType + " " + values.StockName); if (lastValue.Any()) { lastTime = lastValue.Max(x => x.Time); } else { CreateKpiStartEntry(values); } var k = new Kpi { Name = values.ArticleType + " " + values.StockName , Value = values.NewValue , ValueMin = lastTime , Time = (int)Collector.Time , KpiType = DB.Nominal.KpiType.StockEvolution , SimulationConfigurationId = Collector.simulationId.Value , SimulationNumber = Collector.simulationNumber.Value , IsFinal = false , IsKpi = true , SimulationType = Collector.simulationKind.Value }; StockValuesOverTime.Add(item: k); }
public async Task <IActionResult> PutKpi([FromRoute] int id, [FromBody] Kpi kpi) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != kpi.Kpiid) { return(BadRequest()); } _context.Entry(kpi).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!KpiExists(id)) { return(NotFound()); } else { throw; } } return(Content("Successfully updated KPI")); }
public Kpi CalculateKpis() { var calculator = new InteractionRateCalculator(); var kpi = new Kpi(); kpi.UsersCount = this.membersCount; if (this.postsCount <= 0) { return(kpi); } kpi.PostsCount = this.postsCount; kpi.AverageLikesPerPost = (double)this.postLikesCount / this.postsCount; kpi.AverageCommentsPerPost = (double)this.postCommentsCount / this.postsCount; kpi.InteractionRate = this.membersCount > 0 ? calculator.GetInteractionRate(this.postCommentsCount, this.postLikesCount, this.postsCount, this.shareCount, this.membersCount) : 0; kpi.ResponseRate = (double)this.postsWithAdminCommentsCount / this.postsCount; kpi.UgcRate = (double)(this.postsCount - this.adminPostsCount) / this.postsCount; kpi.InvolmentRate = this.membersCount > 0 ? (double)this.postsCount / this.membersCount : 0; kpi.AdminPostsCount = this.adminPostsCount; kpi.UserPostsCount = this.postsCount - this.adminPostsCount; kpi.SharePerPosts = (double)this.shareCount / this.postsCount; return(kpi); }
/// <summary> /// Get Client KPI's AlertLevel With Operator. (Ex: >=,5555) /// </summary> /// <param name="clientID"></param> /// <param name="kpi"></param> /// <returns></returns> private string GetKPIAlertLevelWithOperatorForClient(int clientID, Kpi kpi) { string clientSpecificAlert = _m3PactContext.ClientKpimap.Where(ck => ck.ClientId == clientID && ck.Kpiid == kpi.Kpiid).Select(ck => ck.ClientStandard).FirstOrDefault(); string alert = (clientSpecificAlert != null && clientSpecificAlert != "") ? clientSpecificAlert : kpi.AlertLevel; return(alert); }
public async Task <IActionResult> PostKpi([FromBody] Kpi kpi) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } _context.Kpi.Add(kpi); try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { if (KpiExists(kpi.Kpiid)) { return(new StatusCodeResult(StatusCodes.Status409Conflict)); } else { throw; } } return(CreatedAtAction("GetKpi", new { id = kpi.Kpiid }, kpi)); }
public static KpiInfo CreateKpiInfo(Kpi kpi) { if (kpi == null) { return(null); } KpiInfo info = new KpiInfo(); info.Caption = kpi.Caption; info.Description = kpi.Description; info.Name = kpi.Name; info.DisplayFolder = kpi.DisplayFolder; info.StatusGraphic = kpi.StatusGraphic; info.TrendGraphic = kpi.TrendGraphic; // Информация о предках if (kpi.ParentCube != null) { info.ParentCubeId = kpi.ParentCube.Name; } if (kpi.ParentKpi != null) { info.ParentKpiId = kpi.ParentKpi.Name; } // Свойства foreach (Property prop in kpi.Properties) { //PropertyInfo pi = new PropertyInfo(prop.Name, prop.Type, prop.Value); PropertyInfo pi = new PropertyInfo(prop.Name, prop.Value); info.Properties.Add(pi); } return(info); }
private void button3_Click(object sender, EventArgs e) { //int cod = 994; DAOKpi daok = new DAOKpi(); DAORegistro daor = new DAORegistro(); for (int i = 986; i >= 970; i--) { DataTable dt = daok.ObtenerKPI(i); Kpi kpi = new Kpi(); foreach (DataRow rw in dt.Rows) { kpi.IndCod_KPIDivision = i + 2; kpi.Ind_KPIDivision = rw[1].ToString(); kpi.Ind_KPIDivisionAbrev = rw[2].ToString(); kpi.Ind_KPIDivisionEstado = rw[3].ToString(); kpi.Ind_KPIDivisionCodUni = rw[4].ToString(); kpi.Ind_KPITipoData = rw[5].ToString(); kpi.Ind_SLA = (decimal)Decimal.Parse(rw[6].ToString()); kpi.IndCod_KPIGen = (int)Int32.Parse(rw[7].ToString()); kpi.Cod_sociedad = (int)Int32.Parse(rw[8].ToString()); kpi.Ind_KPIDivisionTipo = rw[9].ToString(); kpi.Uni_falla = (decimal)Decimal.Parse(rw[10].ToString()); kpi.Tas_multa = (decimal)Decimal.Parse(rw[11].ToString()); } daok.insertKPICompleto(kpi); daor.updateRegistros(i, i + 2); daok.deleteKPI(i); } MessageBox.Show("Fin"); }
public IHttpActionResult Post([FromBody] Kpi kpi) { LogManager.AddInfo(DateTime.Now + $" BEGIN : KpisController.Post Fecha:{kpi.Fecha}, PromedioEdad:{kpi.PromedioEdad}, DesviacionEstandar:{kpi.DesviacionEstandar}"); var result = new JsonResultModel <string>() { Success = false };; var stopWatch = GetStopWatch(); try { kpisService.Create(kpi); result.Success = true; LogManager.AddInfo(DateTime.Now + $" SUCCESS : KpisController.Post Fecha:{kpi.Fecha}, PromedioEdad:{kpi.PromedioEdad}, DesviacionEstandar:{kpi.DesviacionEstandar}"); stopWatch.Stop(); } catch (Exception ex) { stopWatch.Stop(); LogManager.AddError("KpisController", "Post", string.Empty, string.Empty, stopWatch.ElapsedTicks, ex); // result.Message = ex.Message; } return(Ok(result)); }
public IHttpActionResult Patch(string kpiId, [FromBody] Kpi client) { LogManager.AddInfo(DateTime.Now + $" BEGIN : KpisController.patch kpiId:{kpiId}"); var result = new JsonResultModel <string>() { Success = false };; var stopWatch = GetStopWatch(); try { kpisService.Update(kpiId, client); result.Success = true; LogManager.AddInfo(DateTime.Now + $" BEGIN : KpisController.patch kpiId:{kpiId}"); stopWatch.Stop(); } catch (Exception ex) { stopWatch.Stop(); LogManager.AddError("KpisController", "patch", string.Empty, string.Empty, stopWatch.ElapsedTicks, ex); // result.Message = ex.Message; } return(Ok(result)); }
private void button3_Click(object sender, EventArgs e) { Kpi kmodif = new Kpi(); kmodif.IndCod_KPIDivision = (int)Int32.Parse(txtcodsis.Text); kmodif.Ind_KPIDivisionCodUni = txtcodigoM.Text; kmodif.Ind_KPIDivision = txtnombreM.Text; kmodif.Ind_KPIDivisionAbrev = txtabrevM.Text; if (cboprioridadM.SelectedIndex == 0) { kmodif.Ind_KPITipoData = "Otros"; } else { kmodif.Ind_KPITipoData = "Principal"; } kmodif.Cod_sociedad = (int)Int32.Parse(cboempresaM.SelectedValue.ToString()); if (cboestadoM.SelectedIndex == 0) { kmodif.Ind_KPIDivisionEstado = "Alta"; } else { kmodif.Ind_KPIDivisionEstado = "Baja"; } DAOKpi dao = new DAOKpi(); dao.updateKPI(kmodif); MessageBox.Show("Guardado!"); }
private void button1_Click(object sender, EventArgs e) { if (CamposCompletos()) { if (!ExisteelEnlace(txtcd.Text)) { Kpi nuevo = new Kpi(); nuevo.Cod_sociedad = (int)Int32.Parse(cboempresa.SelectedValue.ToString()); nuevo.Ind_KPIDivision = txtnombre.Text; nuevo.Ind_KPIDivisionAbrev = txtabrev.Text; nuevo.Ind_KPIDivisionEstado = "Alta"; nuevo.Ind_KPIDivisionCodUni = txtcd.Text; nuevo.Ind_KPITipoData = cboprioridad.SelectedItem.ToString(); nuevo.Ind_SLA = CalculodeSLAAcordado(cbozona.SelectedIndex, cboacceso.SelectedIndex); nuevo.IndCod_KPIGen = 1; nuevo.Ind_KPIDivisionTipo = "Porcentaje"; DAOKpi dao = new DAOKpi(); dao.insertKPI(nuevo); MessageBox.Show("Agregado el Nuevo Enlace"); this.Close(); } else { MessageBox.Show("Ya existe un enlace con el CD ingresado."); } } else { MessageBox.Show("Inserta todo los Datos"); } }
public async Task <ActionResult <Kpi> > PostKpi(Kpi kpi) { kpi.CreationDate = DateTime.Now; _context.Kpis.Add(kpi); await _context.SaveChangesAsync(); return(CreatedAtAction("GetKpi", new { id = kpi.Id }, kpi)); }
public static MboActuals Create(MboRev mboRev, Kpi kpi, MonthlyValuesValueObject values) { var entity = new MboActuals() { MboRev = mboRev, Kpi = kpi, Values = values }; return(entity); }
public static MboKpi Create(MboRev mboRev, Kpi kpi) { var entity = new MboKpi() { Revision = mboRev, Kpi = kpi }; return(entity); }
public Tuple <bool, List <GradeKpiItem> > KpiItemOperator(User user, IList <KpiItem> kpiItems, string logicalOperator, TimeType timeType) { // 条件结果 var oldOperator = logicalOperator; var kpiItemResult = false; var gradeKpiItemList = new List <GradeKpiItem>(); foreach (var kpiItem in kpiItems) { var kpi = new Kpi { ModuleId = kpiItem.KpiConfigId, UserId = user.Id, Type = timeType }; // 最后一条Kpi考核记录 var lastKpi = Resolve <IKpiService>().GetLastSingle(kpi); if (lastKpi != null) { kpiItemResult = LinqHelper.CompareByOperator(kpiItem.OperatorCompare, kpiItem.Amount, lastKpi.TotalValue); // 记录记录 var kpiConfig = Resolve <IAutoConfigService>().GetList <KpiAutoConfig>().ToList() .FirstOrDefault(r => r.Id == kpiItem.KpiConfigId); var gradeKpiItem = new GradeKpiItem { Amount = lastKpi.TotalValue, KpiId = kpi.Id, KpiName = kpiConfig?.Name, KpiConfigId = kpiConfig?.Id }; gradeKpiItemList.Add(gradeKpiItem); } else { kpiItemResult = false; } // 将唯一标识,用条件结果替换 logicalOperator = logicalOperator.Replace(kpiItem.Key, kpiItemResult.ToString().ToLower()); } // 根据逻辑计算结算结果 try { kpiItemResult = LogicExpression.Operate(logicalOperator); } catch { throw new ValidException("计算报错,请确认逻辑运算符格式是否正确,逻辑预算符:" + oldOperator); } return(Tuple.Create(kpiItemResult, gradeKpiItemList)); }
public bool Update(string kpiId, Kpi client) { ThrowExceptionWhenKpiIdIsNull(kpiId); ValidateKpiInformation(client); client._id = kpiId; return(kpisRepository.Update(client)); }
public void Create(Kpi kpi) { ValidateKpiInformation(kpi); if (!string.IsNullOrEmpty(kpi._id)) { throw new ArgumentException("kpi._id deberia ser nulo o vacio"); } kpisRepository.Create(kpi); }
public bool Delete(Kpi kpi) { var collection = context.GetKpis(); var deleteResult = collection.DeleteOne( Builders <Kpi> .Filter.Eq(x => x._id, kpi._id)); var result = deleteResult.IsAcknowledged && (deleteResult.DeletedCount == 1 || deleteResult.DeletedCount == 0); return(result); }
private void button2_Click(object sender, EventArgs e) { DAOKpi daok = new DAOKpi(); Kpi kpi = new Kpi(); kpi.IndCod_KPIDivision = (int)Int32.Parse(txtcodigo.Text); kpi.Ind_KPIDivisionEstado = "Baja"; daok.updateKPI(kpi); MessageBox.Show("Se ha dado de baja el enlace!"); this.Close(); }
public static void AddKpiToPivotTable(Kpi k, Excel.PivotTable pvt) { foreach (string sKpiPart in new string[] { "KPI_VALUE", "KPI_GOAL", "KPI_STATUS", "KPI_TREND" }) { string sKpiMeasure = Convert.ToString(k.Properties[sKpiPart].Value); if (string.IsNullOrEmpty(sKpiMeasure)) { continue; } Excel.CubeField field = pvt.CubeFields.get_Item(sKpiMeasure); if (field.Orientation == Excel.XlPivotFieldOrientation.xlDataField) { continue; } field.Orientation = Excel.XlPivotFieldOrientation.xlDataField; if (sKpiPart == "KPI_STATUS" || sKpiPart == "KPI_TREND") { Excel.PivotItem pi = (Excel.PivotItem)pvt.DataPivotField.PivotItems(sKpiMeasure); Excel.Range range = pi.DataRange; Excel.IconSetCondition iconSet = (Excel.IconSetCondition)range.FormatConditions.AddIconSetCondition(); string sStatusGraphic = (sKpiPart == "KPI_STATUS" ? k.StatusGraphic : k.TrendGraphic); IconSetDefinition def = new IconSetDefinition(); if (_dictIconSetLookup.ContainsKey(sStatusGraphic)) { def = _dictIconSetLookup[sStatusGraphic]; } else { System.Windows.Forms.MessageBox.Show("Status graphic type " + sStatusGraphic + " not expected. Please contact the authors of OLAP PivotTable Extensions on the About tab.", "OLAP PivotTable Extensions"); } iconSet.IconSet = pvt.Application.ActiveWorkbook.IconSets[def.IconSet]; try { iconSet.ScopeType = Microsoft.Office.Interop.Excel.XlPivotConditionScope.xlDataFieldScope; } catch { } iconSet.ShowIconOnly = true; iconSet.ReverseOrder = def.Reverse; int i = 2; foreach (double d in def.ValueBoundaries) { Excel.IconCriterion crit = iconSet.IconCriteria[i++]; crit.Type = Excel.XlConditionValueTypes.xlConditionValueNumber; crit.Value = d; crit.Operator = (int)(Excel.XlFormatConditionOperator.xlGreaterEqual); } } } }
public static Kpi BuildKpi(string classWrap, string title, long userId) { Kpi item = new Kpi() { Id = GetRandomId(), Score = GetRandom(1000), ClassWrapperName = classWrap, Title = title, UserId = userId }; return(item); }
private static void ValidateKpiInformation(Kpi kpi) { if (kpi == null) { throw new ArgumentNullException("kpi"); } if (kpi.Fecha == DateTime.MinValue || kpi.Fecha == DateTime.MaxValue) { throw new ArgumentException("Fecha inválida"); } //if (kpi.PromedioEdad < 0) throw new ArgumentException("PromedioEdad no puede ser negatico o igual a cero"); //if (kpi.DesviacionEstandar <= 0) throw new ArgumentException("DesviacionEstandar no puede ser negativa o igual a cero"); }
public int calcularConsecutivos(Kpi kpi) { DAORegistro daoregistro = new DAORegistro(); DataTable dtregistro = daoregistro.MostrarRegistroxKPI(kpi.IndCod_KPIDivision.Value); List <Registro> listaregistro = new List <Registro>(); foreach (DataRow rw in dtregistro.Rows) { Registro reg = new Registro(); reg.Fecha_registro = DateTime.ParseExact(rw[0].ToString(), "yyyy-MM-dd HH:mm:ss", null); reg.Periodo_registro = rw[1].ToString(); reg.IndCod_KPIDivision = (int)Int32.Parse(rw[2].ToString()); if (!rw[3].ToString().Equals("")) { reg.Valor_registro = (decimal)Decimal.Parse(rw[3].ToString()); } if (!rw[4].ToString().Equals("")) { reg.Valor_penalidad = (decimal)Decimal.Parse(rw[4].ToString()); } listaregistro.Add(reg); } int meses = 0; for (int i = listaregistro.Count - 1; i >= 0; i--) { if (kpi.Ind_KPIDivisionTipo.Equals("Porcentaje")) { if (listaregistro[i].Valor_registro < kpi.Ind_SLA) { break; } } else { if (listaregistro[i].Valor_registro > kpi.Ind_SLA) { break; } } meses++; } return(meses); }
public bool Update(Kpi kpi) { var collection = context.GetKpis(); var updateResult = collection.UpdateOne( Builders <Kpi> .Filter.Eq(x => x._id, kpi._id), Builders <Kpi> .Update .Set(x => x.Fecha, kpi.Fecha.Date) .Set(x => x.PromedioEdad, kpi.PromedioEdad) .Set(x => x.DesviacionEstandar, kpi.DesviacionEstandar)); var result = updateResult.IsAcknowledged && (updateResult.ModifiedCount == 1 || updateResult.ModifiedCount == 0); return(result); }
public SaveKpiTransformationLogResponse Save(SaveKpiTransformationLogRequest request) { try { var kpiTransformationLog = request.MapTo <KpiTransformationLog>(); var kpiTransformationSchedule = DataContext.KpiTransformationSchedules.Local.FirstOrDefault(x => x.Id == request.KpiTransformationScheduleId); if (kpiTransformationSchedule == null) { kpiTransformationSchedule = new KpiTransformationSchedule { Id = request.KpiTransformationScheduleId }; DataContext.KpiTransformationSchedules.Attach(kpiTransformationSchedule); } kpiTransformationLog.Schedule = kpiTransformationSchedule; var kpi = DataContext.Kpis.Local.FirstOrDefault(x => x.Id == request.KpiId); if (kpi == null) { kpi = new Kpi { Id = request.KpiId }; DataContext.Kpis.Attach(kpi); } kpiTransformationLog.Kpi = kpi; DataContext.KpiTransformationLogs.Add(kpiTransformationLog); //remove related kpi if error if (request.Status == Data.Enums.KpiTransformationStatus.Error && request.MethodId == 1 && request.NeedCleanRowWhenError) { var achievements = DataContext.KpiAchievements.Where( x => x.Kpi.Id == request.KpiId && x.Periode == request.Periode && x.PeriodeType == request.PeriodeType).ToList(); foreach (var achievement in achievements) { DataContext.KpiAchievements.Remove(achievement); } DataContext.SaveChanges(); } DataContext.SaveChanges(); return(new SaveKpiTransformationLogResponse { IsSuccess = true, Message = "You have been successfully saved kpi transformation log" }); } catch (Exception ex) { return(new SaveKpiTransformationLogResponse { IsSuccess = false, Message = "Error when saving kpi transformation log" + ex.Message }); } }
public SaveMirDataTableResponse SaveMirDataTableRespons(SaveMirDataTableRequest request) { var MirDataTable = request.MapTo <MirDataTable>(); if (request.MirDataId == 0) { MirDataTable.MirConfiguration = DataContext.MirConfigurations.FirstOrDefault(x => x.Id == request.MirConfigurationId); MirDataTable.Kpis = new List <Kpi>(); foreach (var kpiId in request.KpiIds) { var kpi = DataContext.Kpis.Local.FirstOrDefault(x => x.Id == kpiId); if (kpi == null) { kpi = new Kpi { Id = kpiId }; DataContext.Kpis.Attach(kpi); } MirDataTable.Kpis.Add(kpi); } DataContext.MirDataTables.Add(MirDataTable); } else { MirDataTable = DataContext.MirDataTables.FirstOrDefault(x => x.Id == request.MirDataId); request.MapPropertiesToInstance <MirDataTable>(MirDataTable); MirDataTable.Kpis = new List <Kpi>(); foreach (var kpiId in request.KpiIds) { var kpi = DataContext.Kpis.Local.FirstOrDefault(x => x.Id == kpiId); if (kpi == null) { kpi = new Kpi { Id = kpiId }; DataContext.Kpis.Attach(kpi); } MirDataTable.Kpis.Add(kpi); } } DataContext.SaveChanges(); return(new SaveMirDataTableResponse { IsSuccess = true, Message = "Mir Data Table has been saved succesfully" }); }
private void UpdateKPI(FUpdateStockValue values) { var k = new Kpi { Name = values.StockName , Value = values.NewValue , Time = (int)Collector.Time , KpiType = DB.Enums.KpiType.StockEvolution , SimulationConfigurationId = Collector.simulationId.Value , SimulationNumber = Collector.simulationNumber.Value , IsFinal = false , IsKpi = true , SimulationType = Collector.simulationKind.Value }; StockValuesOverTime.Add(item: k); }
private void CreateKpi(Collector agent, string value, string name, KpiType kpiType) { var k = new Kpi { Name = name, Value = Convert.ToDouble(value: value), Time = (int)agent.Time, KpiType = kpiType, SimulationConfigurationId = agent.simulationId.Value, SimulationNumber = agent.simulationNumber.Value, IsFinal = false, IsKpi = true, SimulationType = agent.simulationKind.Value }; Kpis.Add(item: k); }
private void CreateKpiStartEntry(FUpdateStockValue values) { var k = new Kpi { Name = values.ArticleType + " " + values.StockName, Value = values.NewValue, Time = 0, KpiType = DB.Nominal.KpiType.StockEvolution, SimulationConfigurationId = Collector.simulationId.Value, SimulationNumber = Collector.simulationNumber.Value, IsFinal = false, IsKpi = true, SimulationType = Collector.simulationKind.Value }; StockValuesOverTime.Add(item: k); }
private void CreateKpi(string name, double values) { var k = new Kpi { Name = name, Value = values, Time = (int)Collector.Time, KpiType = DB.Nominal.KpiType.StockTotals, SimulationConfigurationId = Collector.simulationId.Value, SimulationNumber = Collector.simulationNumber.Value, IsFinal = true, IsKpi = true, SimulationType = Collector.simulationKind.Value }; StockTotalValues.Add(item: k); }
internal void FromKpi(Kpi k) { this.SetAllNull(); if (k.UniqueName != null) this.UniqueName = k.UniqueName.Value; if (k.Caption != null) this.Caption = k.Caption.Value; if (k.DisplayFolder != null) this.DisplayFolder = k.DisplayFolder.Value; if (k.MeasureGroup != null) this.MeasureGroup = k.MeasureGroup.Value; if (k.ParentKpi != null) this.ParentKpi = k.ParentKpi.Value; if (k.Value != null) this.Value = k.Value.Value; if (k.Goal != null) this.Goal = k.Goal.Value; if (k.Status != null) this.Status = k.Status.Value; if (k.Trend != null) this.Trend = k.Trend.Value; if (k.Weight != null) this.Weight = k.Weight.Value; }
public static KpiInfo CreateKpiInfo(Kpi kpi) { if (kpi == null) return null; KpiInfo info = new KpiInfo(); info.Caption = kpi.Caption; info.Description = kpi.Description; info.Name = kpi.Name; info.DisplayFolder = kpi.DisplayFolder; info.StatusGraphic = kpi.StatusGraphic; info.TrendGraphic = kpi.TrendGraphic; // Информация о предках if (kpi.ParentCube != null) { info.ParentCubeId = kpi.ParentCube.Name; } if (kpi.ParentKpi != null) { info.ParentKpiId = kpi.ParentKpi.Name; } // Свойства foreach (Property prop in kpi.Properties) { //PropertyInfo pi = new PropertyInfo(prop.Name, prop.Type, prop.Value); PropertyInfo pi = new PropertyInfo(prop.Name, prop.Value); info.Properties.Add(pi); } return info; }
internal Kpi ToKpi() { Kpi k = new Kpi(); k.UniqueName = this.UniqueName; if (this.Caption != null && this.Caption.Length > 0) k.Caption = this.Caption; if (this.DisplayFolder != null && this.DisplayFolder.Length > 0) k.DisplayFolder = this.DisplayFolder; if (this.MeasureGroup != null && this.MeasureGroup.Length > 0) k.MeasureGroup = this.MeasureGroup; if (this.ParentKpi != null && this.ParentKpi.Length > 0) k.ParentKpi = this.ParentKpi; k.Value = this.Value; if (this.Goal != null && this.Goal.Length > 0) k.Goal = this.Goal; if (this.Status != null && this.Status.Length > 0) k.Status = this.Status; if (this.Trend != null && this.Trend.Length > 0) k.Trend = this.Trend; if (this.Weight != null && this.Weight.Length > 0) k.Weight = this.Weight; return k; }