public void RodarCadeia(char[] cadeia) { if (!Regras.Any(r => r.EstadoAtual.Inicial)) { Console.WriteLine( "O automato deve ter uma regra inicial para rodar uma Cadeia, crie o automato novamente com no minimo 1 regra inicial"); return; } Console.WriteLine($"Cadeia a ser analisada: {new string(cadeia)}"); var estadoAtual = Estados.First(e => e.Inicial); var cadeiaAceita = false; try { foreach (var c in cadeia) { var regra = Regras.FirstOrDefault(r => r.Identificador == c && r.EstadoAtual == estadoAtual); if (regra == null) { throw new CadeiaInvalidaException(); } estadoAtual = regra.ProximoEstado; Console.WriteLine(!estadoAtual.Final ? $"Leu o Símbolo {c} o foi para o Estado {estadoAtual.Nome}" : $"Leu o Símbolo {c} o foi para o Estado final {estadoAtual.Nome}"); } if (estadoAtual.Final) { cadeiaAceita = true; } } catch (Exception e) { switch (e) { case CadeiaInvalidaException _: break; default: throw; } } Console.WriteLine(cadeiaAceita ? $"A cadeia {new string(cadeia)} foi ACEITA pelo Autômato!" : $"A cadeia {new string(cadeia)} foi REJEITADA pelo Autômato!"); }
internal override string GenerarFiltrosColumnas() { var sb = new StringBuilder(); var flag = true; ValoresParametros.Clear(); Condiciones.Clear(); sb.Append(" p.empresa = '" + Empresa + "' "); if (Series?.Any() ?? false) { if (flag) { sb.Append(" AND "); } foreach (var item in Series) { ValoresParametros.Add(item, item); } sb.Append(" p.fkseries in ( " + string.Join(", ", Series.ToArray().Select(f => "@" + f)) + " ) "); Condiciones.Add(string.Format("{0}: {1}", RPresupuestosCompras.SeriesListado, string.Join(", ", Series.ToArray()))); flag = true; } if (!string.IsNullOrEmpty(Estado) && !Estado.Equals("0-")) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("estado", Estado); sb.Append(" p.fkestados=@estado "); Condiciones.Add(string.Format("{0}: {1}", RPresupuestosCompras.Estado, Estados.First(f => f.CampoId == Estado).Descripcion)); flag = true; } if (FechaDesde.HasValue) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("fechadesde", FechaDesde.Value); sb.Append(" p.fechadocumento>=@fechadesde "); Condiciones.Add(string.Format("{0}: {1}", RPresupuestosCompras.FechaDesde, FechaDesde)); flag = true; } if (FechaHasta.HasValue) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("fechahasta", FechaHasta.Value); sb.Append(" p.fechadocumento<=@fechahasta "); Condiciones.Add(string.Format("{0}: {1}", RPresupuestosCompras.FechaHasta, FechaHasta)); flag = true; } if (!string.IsNullOrEmpty(CuentaDesde)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("cuentadesde", CuentaDesde); sb.Append(" p.fkproveedores>=@cuentadesde "); Condiciones.Add(string.Format("{0}: {1}", Rcuentas.CuentaDesde, CuentaDesde)); flag = true; } if (!string.IsNullOrEmpty(CuentaHasta)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("cuentahasta", CuentaHasta); sb.Append(" p.fkproveedores<=@cuentahasta "); Condiciones.Add(string.Format("{0}: {1}", Rcuentas.CuentaHasta, CuentaHasta)); flag = true; } if (!string.IsNullOrEmpty(Fkfamiliacliente)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("fkfamiliacliente", Fkfamiliacliente); sb.Append(" c.fkfamiliaproveedor=@fkfamiliacliente "); Condiciones.Add(string.Format("{0}: {1}", RProveedores.Fkfamiliaproveedor, Fkfamiliacliente)); flag = true; } if (!string.IsNullOrEmpty(Fkzonacliente)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("fkzonacliente", Fkzonacliente); sb.Append(" c.fkzonaproveedor=@fkzonacliente "); Condiciones.Add(string.Format("{0}: {1}", RProveedores.Fkzonaproveedor, Fkzonacliente)); flag = true; } if (!string.IsNullOrEmpty(Agente)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("agente", Agente); sb.Append(" p.fkagentes = @agente "); Condiciones.Add(string.Format("{0}: {1}", RClientes.Fkcuentasagente, Agente)); flag = true; } if (!string.IsNullOrEmpty(Comercial)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("comercial", Comercial); sb.Append(" p.fkcomerciales = @comercial "); Condiciones.Add(string.Format("{0}: {1}", RClientes.Fkcuentascomercial, Comercial)); flag = true; } if (!string.IsNullOrEmpty(Fkpais)) { if (flag) { sb.Append(" AND "); } AppService = new ApplicationHelper(Context); ValoresParametros.Add("pais", Fkpais); sb.Append(" di.fkpais =@pais "); Condiciones.Add(string.Format("{0}: {1}", RDireccion.Fkpais, AppService.GetListPaises().SingleOrDefault(f => f.Valor == Fkpais).Descripcion)); flag = true; } if (!string.IsNullOrEmpty(Fkmonedas)) { if (flag) { sb.Append(" AND "); } var serviceMonedas = FService.Instance.GetService(typeof(MonedasModel), Context); ValoresParametros.Add("Fkmonedas", Fkmonedas); sb.Append(" p.fkmonedas =@Fkmonedas "); Condiciones.Add(string.Format("{0}: {1}", RPresupuestosCompras.Fkmonedas, serviceMonedas.getAll().Select(f => (MonedasModel)f).SingleOrDefault(f => f.Id == int.Parse(Fkmonedas)).Descripcion)); flag = true; } return(sb.ToString()); }
internal override string GenerarFiltrosColumnas() { var sb = new StringBuilder(); var flag = true; ValoresParametros.Clear(); Condiciones.Clear(); sb.Append(" p.empresa = '" + Empresa + "' "); if (Series?.Any() ?? false) { if (flag) { sb.Append(" AND "); } foreach (var item in Series) { ValoresParametros.Add(item, item); } sb.Append(" p.fkseries in ( " + string.Join(", ", Series.ToArray().Select(f => "@" + f)) + " ) "); Condiciones.Add(string.Format("{0}: {1}", RFacturasCompras.SeriesListado, string.Join(", ", Series.ToArray()))); flag = true; } if (!string.IsNullOrEmpty(Estado) && !Estado.Equals("0-")) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("estado", Estado); sb.Append(" p.fkestados=@estado "); Condiciones.Add(string.Format("{0}: {1}", RFacturasCompras.Estado, Estados?.First(f => f.CampoId == Estado).Descripcion ?? string.Empty)); flag = true; } if (FechaDesde.HasValue) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("fechadesde", FechaDesde.Value); sb.Append(" p.fechadocumento>=@fechadesde "); Condiciones.Add(string.Format("{0}: {1}", RFacturasCompras.FechaDesde, FechaDesde)); flag = true; } if (FechaHasta.HasValue) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("fechahasta", FechaHasta.Value); sb.Append(" p.fechadocumento<=@fechahasta "); Condiciones.Add(string.Format("{0}: {1}", RFacturasCompras.FechaHasta, FechaHasta)); flag = true; } if (!string.IsNullOrEmpty(CuentaDesde)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("cuentadesde", CuentaDesde); sb.Append(" p.fkproveedores>=@cuentadesde "); Condiciones.Add(string.Format("{0}: {1}", Rcuentas.CuentaDesde, CuentaDesde)); flag = true; } if (!string.IsNullOrEmpty(CuentaHasta)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("cuentahasta", CuentaHasta); sb.Append(" p.fkproveedores<=@cuentahasta "); Condiciones.Add(string.Format("{0}: {1}", Rcuentas.CuentaHasta, CuentaHasta)); flag = true; } if (!string.IsNullOrEmpty(FkarticulosDesde)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("fkarticulosdesde", FkarticulosDesde); sb.Append(" pl.fkarticulos >= @fkarticulosdesde "); Condiciones.Add(string.Format("{0}: {1}", RFacturasCompras.FkarticulosDesde, FkarticulosDesde)); flag = true; } if (!string.IsNullOrEmpty(FkarticulosHasta)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("fkarticuloshasta", FkarticulosHasta); sb.Append(" pl.fkarticulos <= @fkarticuloshasta "); Condiciones.Add(string.Format("{0}: {1}", RFacturasCompras.FkarticulosHasta, FkarticulosHasta)); flag = true; } if (!string.IsNullOrEmpty(Fkfamiliasmateriales)) { if (flag) { sb.Append(" AND "); } AppService = new ApplicationHelper(Context); ValoresParametros.Add("fkfamiliasmateriales", Fkfamiliasmateriales); sb.Append(" exists(select mm.* from materiales as mm where mm.id=Substring(pl.fkarticulos,3,3) and mm.fkfamiliamateriales=@fkfamiliasmateriales) "); Condiciones.Add(string.Format("{0}: {1}", RFacturasCompras.FamiliaMateriales, AppService.GetListFamiliaMateriales().SingleOrDefault(f => f.Valor == Fkfamiliasmateriales).Descripcion)); flag = true; } if (!string.IsNullOrEmpty(FkfamiliasDesde)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("fkfamiliasdesde", FkfamiliasDesde); sb.Append(" Substring(pl.fkarticulos,0,3) >= @fkfamiliasdesde "); Condiciones.Add(string.Format("{0}: {1}", RFacturasCompras.FamiliaDesde, FkfamiliasDesde)); flag = true; } if (!string.IsNullOrEmpty(FkfamiliasHasta)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("fkfamiliashasta", FkfamiliasHasta); sb.Append(" Substring(pl.fkarticulos,0,3) <= @fkfamiliashasta "); Condiciones.Add(string.Format("{0}: {1}", RFacturasCompras.FamiliaHasta, FkfamiliasHasta)); flag = true; } if (!string.IsNullOrEmpty(FkmaterialesDesde)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("fkmaterialesdesde", FkmaterialesDesde); sb.Append(" Substring(pl.fkarticulos,3,3) >= @fkmaterialesdesde "); Condiciones.Add(string.Format("{0}: {1}", RFacturasCompras.MaterialesDesde, FkmaterialesDesde)); flag = true; } if (!string.IsNullOrEmpty(FkmaterialesHasta)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("fkmaterialeshasta", FkmaterialesHasta); sb.Append(" Substring(pl.fkarticulos,3,3) <= @fkmaterialeshasta "); Condiciones.Add(string.Format("{0}: {1}", RFacturasCompras.MaterialesHasta, FkmaterialesHasta)); flag = true; } if (!string.IsNullOrEmpty(FkcaracteristicasDesde)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("fkcaracteristicasdesde", FkcaracteristicasDesde); sb.Append(" Substring(pl.fkarticulos,6,2) >= @fkcaracteristicasdesde "); Condiciones.Add(string.Format("{0}: {1}", RFacturasCompras.CaracteristicasDesde, FkcaracteristicasDesde)); flag = true; } if (!string.IsNullOrEmpty(FkcaracteristicasHasta)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("fkcaracteristicashasta", FkcaracteristicasHasta); sb.Append(" Substring(pl.fkarticulos,6,2) <= @fkcaracteristicashasta "); Condiciones.Add(string.Format("{0}: {1}", RFacturasCompras.CaracteristicasHasta, FkcaracteristicasHasta)); flag = true; } if (!string.IsNullOrEmpty(FkgrosoresDesde)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("fkgrosoresdesde", FkgrosoresDesde); sb.Append(" Substring(pl.fkarticulos,8,2) >= @fkgrosoresdesde "); Condiciones.Add(string.Format("{0}: {1}", RFacturasCompras.GrosoresDesde, FkgrosoresDesde)); flag = true; } if (!string.IsNullOrEmpty(FkgrosoresHasta)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("fkgrosoreshasta", FkgrosoresHasta); sb.Append(" Substring(pl.fkarticulos,8,2) <= @fkgrosoreshasta "); Condiciones.Add(string.Format("{0}: {1}", RFacturasCompras.GrosoresHasta, FkgrosoresHasta)); flag = true; } if (!string.IsNullOrEmpty(FkacabadosDesde)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("fkacabadosdesde", FkacabadosDesde); sb.Append(" Substring(pl.fkarticulos,10,2) >= @fkacabadosdesde "); Condiciones.Add(string.Format("{0}: {1}", RFacturasCompras.AcabadosDesde, FkacabadosDesde)); flag = true; } if (!string.IsNullOrEmpty(FkacabadosHasta)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("fkacabadoshasta", FkacabadosHasta); sb.Append(" Substring(pl.fkarticulos,10,2) <= @fkacabadoshasta "); Condiciones.Add(string.Format("{0}: {1}", RFacturasCompras.AcabadosHasta, FkacabadosHasta)); flag = true; } return(sb.ToString()); }
internal override string GenerarFiltrosColumnas() { var sb = new StringBuilder(); var flag = true; ValoresParametros.Clear(); Condiciones.Clear(); sb.Append(" fa.empresa = '" + Empresa + "' "); if (Series?.Any() ?? false) { if (flag) sb.Append(" AND "); foreach (var item in Series) ValoresParametros.Add(item, item); sb.Append(" fa.fkseries in ( " + string.Join(", ", Series.ToArray().Select(f => "@" + f)) + " ) "); Condiciones.Add(string.Format("{0}: {1}", RFacturas.SeriesListado, string.Join(", ", Series.ToArray()))); flag = true; } if (!string.IsNullOrEmpty(Estado) && !Estado.Equals("0-")) { if (flag) sb.Append(" AND "); ValoresParametros.Add("estado", Estado); sb.Append(" fa.fkestados=@estado "); Condiciones.Add(string.Format("{0}: {1}", RFacturas.Estado, Estados?.First(f => f.CampoId == Estado).Descripcion??string.Empty)); flag = true; } if (FechaDesde.HasValue) { if (flag) sb.Append(" AND "); ValoresParametros.Add("fechadesde", FechaDesde.Value); sb.Append(" fa.fechadocumento>=@fechadesde "); Condiciones.Add(string.Format("{0}: {1}", RFacturas.FechaDesde, FechaDesde)); flag = true; } if (FechaHasta.HasValue) { if (flag) sb.Append(" AND "); ValoresParametros.Add("fechahasta", FechaHasta.Value); sb.Append(" fa.fechadocumento<=@fechahasta "); Condiciones.Add(string.Format("{0}: {1}", RFacturas.FechaHasta, FechaHasta)); flag = true; } var tipocuenta = Tipo == TipoComision.Agentes ? "fkagentes" : "fkcomerciales"; if (!string.IsNullOrEmpty(CuentaDesde)) { if (flag) sb.Append(" AND "); ValoresParametros.Add("cuentadesde", CuentaDesde); sb.AppendFormat(" fa.{0}>=@cuentadesde ", tipocuenta); Condiciones.Add(string.Format("{0}: {1}", Funciones.GetEnumByStringValueAttribute(Tipo), CuentaDesde)); flag = true; } if (!string.IsNullOrEmpty(CuentaHasta)) { if (flag) sb.Append(" AND "); ValoresParametros.Add("cuentahasta", CuentaHasta); sb.AppendFormat(" fa.{0}<=@cuentahasta ", tipocuenta); Condiciones.Add(string.Format("{0}: {1}", Funciones.GetEnumByStringValueAttribute(Tipo), CuentaHasta)); flag = true; } if (!string.IsNullOrEmpty(SituacionComision)) { if (flag) sb.Append(" AND "); ValoresParametros.Add("situacioncomision", SituacionComision); sb.AppendFormat(" fa.fksituacioncomision=@situacioncomision "); Condiciones.Add(string.Format("{0}: {1}", RFacturas.Fksituacioncomision, SituacionComision)); flag = true; } if (flag) sb.Append(" AND "); sb.AppendFormat(" (fa.{0} is not null and fa.{0} <>'' )", tipocuenta); flag = true; return sb.ToString(); }
internal override string GenerarFiltrosColumnas() { var sb = new StringBuilder(); var flag = true; ValoresParametros.Clear(); Condiciones.Clear(); sb.Append(" p.empresa = '" + Context.Empresa + "' "); if (!string.IsNullOrEmpty(Estado) && !Estado.Equals("0-")) { if (flag) sb.Append(" AND "); ValoresParametros.Add("estado", Estado); sb.Append(" p.fkestados=@estado "); Condiciones.Add(string.Format("{0}: {1}", RPedidos.Estado, Estados?.First(f => f.CampoId == Estado).Descripcion??string.Empty)); flag = true; } if (FechaDesde.HasValue) { if (flag) sb.Append(" AND "); ValoresParametros.Add("fechadesde", FechaDesde.Value); sb.Append(" p.fechadocumento>=@fechadesde "); Condiciones.Add(string.Format("{0}: {1}", RPedidos.FechaDesde, FechaDesde)); flag = true; } if (FechaHasta.HasValue) { if (flag) sb.Append(" AND "); ValoresParametros.Add("fechahasta", FechaHasta.Value); sb.Append(" p.fechadocumento<=@fechahasta "); Condiciones.Add(string.Format("{0}: {1}", RPedidos.FechaHasta, FechaHasta)); flag = true; } if (!string.IsNullOrEmpty(ArticuloDesde)) { if (flag) sb.Append(" AND "); ValoresParametros.Add("articulodesde", ArticuloDesde); sb.Append(" pl.fkarticulos>=@articulodesde "); Condiciones.Add(string.Format("{0}: {1}", RPedidos.FkarticulosDesde, ArticuloDesde)); flag = true; } if (!string.IsNullOrEmpty(ArticuloHasta)) { if (flag) sb.Append(" AND "); ValoresParametros.Add("articulohasta", ArticuloHasta); sb.Append(" pl.fkarticulos<=@articulohasta "); Condiciones.Add(string.Format("{0}: {1}", RPedidos.FkarticulosHasta, ArticuloHasta)); flag = true; } if (!string.IsNullOrEmpty(LoteDesde)) { if (flag) sb.Append(" AND "); ValoresParametros.Add("lotedesde", LoteDesde); sb.Append(" pl.lote>=@lotedesde "); Condiciones.Add(string.Format("{0}: {1}", RPedidos.LoteDesde, LoteDesde)); flag = true; } if (!string.IsNullOrEmpty(LoteHasta)) { if (flag) sb.Append(" AND "); ValoresParametros.Add("lotehasta", LoteHasta); sb.Append(" pl.lote<=@lotedesde "); Condiciones.Add(string.Format("{0}: {1}", RPedidos.LoteHasta, LoteHasta)); flag = true; } if (!string.IsNullOrEmpty(CuentaDesde)) { if (flag) sb.Append(" AND "); ValoresParametros.Add("cuentadesde", CuentaDesde); sb.Append(" p.fkclientes>=@cuentadesde "); Condiciones.Add(string.Format("{0}: {1}", Rcuentas.CuentaDesde, CuentaDesde)); flag = true; } if (!string.IsNullOrEmpty(CuentaHasta)) { if (flag) sb.Append(" AND "); ValoresParametros.Add("cuentahasta", CuentaHasta); sb.Append(" p.fkclientes<=@cuentahasta "); Condiciones.Add(string.Format("{0}: {1}", Rcuentas.CuentaHasta, CuentaHasta)); flag = true; } return sb.ToString(); }