/// <summary> /// Retorna o valor formatado de acordo com a formatação definida no leiaute /// </summary> /// <param name="leiaute">objeto do tipo leiaute para formatar o valor</param> /// <param name="value">valor a ser formatado</param> /// <param name="leiauteBase">objeto que possui a formatação padrão</param> /// <returns></returns> public static string GetFormattedValue(this ILeiaute leiaute, object value, ILeiauteItem leiauteBase) { string result = ""; //------------------------------------------------------------------------- // Caracter que será usado para preencher os valores a esquerda ou direita do resultado //------------------------------------------------------------------------- char paddingChar = ' '; //------------------------------------------------------------------------- // Se true, os valores serão preenchidos a esquerda, se false a direita //------------------------------------------------------------------------- bool numeric = false; //------------------------------------------------------------------------- // Se for fixo, simplesmente usa o conteúdo como valor //------------------------------------------------------------------------- if(leiauteBase.Fixo) value = leiauteBase.Conteudo; //------------------------------------------------------------------------- // Determinar o tipo de campo e formatar //------------------------------------------------------------------------- switch(leiauteBase.Tipo) { case OpenPOS.Enuns.UniBot.Tipo.Customizado: if(!String.IsNullOrEmpty(leiauteBase.Formato)) { leiauteBase.Formato.Value = value; result = leiauteBase.Formato; } else result = Unimake.Convert.ToString(value); break; case OpenPOS.Enuns.UniBot.Tipo.Integer: result = Unimake.Convert.ToInt(value).ToString(); numeric = true; break; case OpenPOS.Enuns.UniBot.Tipo.Numeric: result = Unimake.Format.Number(value); numeric = true; break; case OpenPOS.Enuns.UniBot.Tipo.Currency: result = Unimake.Format.Currency(value); numeric = true; break; case OpenPOS.Enuns.UniBot.Tipo.DateTime: result = String.Format("{0:dd/MM/yyyy HH:mm:ss}", Convert.ToDateTime(value)); break; case OpenPOS.Enuns.UniBot.Tipo.Date: result = String.Format("{0:dd/MM/yyyy}", Convert.ToDateTime(value)); break; case OpenPOS.Enuns.UniBot.Tipo.Time: result = String.Format("{0:HH:mm:ss}", Convert.ToDateTime(value)); break; case OpenPOS.Enuns.UniBot.Tipo.Boolean: result = Unimake.Convert.ToBoolean(value) ? "1" : "0"; break; case OpenPOS.Enuns.UniBot.Tipo.String: default: result = value == null ? "" : value.ToString(); break; } if(numeric) result = result.PadLeft(leiauteBase.Tamanho, paddingChar); else result = result.PadRight(leiauteBase.Tamanho, paddingChar); return result; }
/// <summary> /// Lê o dado da linha e retorna convertido /// </summary> /// <param name="leiaute">objeto do tipo leiaute</param> /// <param name="line">linha que será avaliada e retornada</param> /// <param name="leiauteBase">leiaute de base para a recuperação da configuração do valor</param> /// <returns></returns> public static object GetFromLine(this ILeiaute leiaute, string line, ILeiauteItem leiauteBase) { object result = null; //------------------------------------------------------------------------- // Valor extraído da linha //------------------------------------------------------------------------- string value = line.Substring(Unimake.Convert.ToInt(leiauteBase.De) - 1, leiauteBase.Tamanho); //------------------------------------------------------------------------- // Determinar o tipo de campo para retornar //------------------------------------------------------------------------- switch(leiauteBase.Tipo) { case OpenPOS.Enuns.UniBot.Tipo.Integer: result = Unimake.Convert.ToInt(value); break; case OpenPOS.Enuns.UniBot.Tipo.Numeric: case OpenPOS.Enuns.UniBot.Tipo.Currency: result = Unimake.Convert.ToDouble(value); break; case OpenPOS.Enuns.UniBot.Tipo.DateTime: case OpenPOS.Enuns.UniBot.Tipo.Date: case OpenPOS.Enuns.UniBot.Tipo.Time: result = Unimake.Convert.ToDateTime(value); break; case OpenPOS.Enuns.UniBot.Tipo.Boolean: result = Unimake.Convert.ToBoolean(value); break; case OpenPOS.Enuns.UniBot.Tipo.Customizado: case OpenPOS.Enuns.UniBot.Tipo.String: default: result = Convert.ToString(value).Trim(); break; } return result; }