/// <summary> /// Validação para Inicio do AFD /// </summary> /// <param name="palavra"></param> /// <param name="sistema"></param> /// <returns></returns> public bool IsValid(string palavra, Sistema sistema) { //Verifica se a palavra esta de acordo com o alfabet if (true) { int count = 0; foreach (var letra in palavra) { if (Alfabeto.Contains(letra.ToString())) { count++; } } if (palavra.Length != count) { return(false); } } //Verifica se o estado Inicial e Final esta na lista de estados if (true) { if (!ListEstados.Contains(Iestado)) { return(false); } int count = (Festado.Where(item => ListEstados.Contains(item))).Count(); if (count != Festado.Count) { return(false); } } //Verifica se o valor das transições esta no alfabeto if (true) { foreach (var item in ListaTransicao) { if (!Alfabeto.Contains(item.NextItem)) { return(false); } } } return(true); }
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}", RAlbaranes.SeriesListado, string.Join(", ", Series.ToArray()))); flag = true; } if (Estados?.Any() ?? false) { if (flag) { sb.Append(" AND "); } sb.Append(" p.fkestados in ( " + string.Join(", ", Estados.ToArray().Select(f => "'" + f + "'")) + " ) "); Condiciones.Add(string.Format("{0}: {1}", RAlbaranes.Estado, string.Join(", ", Estados.Select(f => ListEstados.First(j => j.CampoId == f).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}", RAlbaranes.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}", RAlbaranes.FechaHasta, FechaHasta)); flag = true; } if (!string.IsNullOrEmpty(CuentaDesde)) { if (flag) { sb.Append(" AND "); } ValoresParametros.Add("cuentadesde", CuentaDesde); sb.AppendFormat(" p.{0}>=@cuentadesde ", _columnatercero); 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.AppendFormat(" p.{0}<=@cuentahasta ", _columnatercero); 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}", RAlbaranes.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}", RAlbaranes.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}", RAlbaranes.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}", RAlbaranes.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}", RAlbaranes.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}", RAlbaranes.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}", RAlbaranes.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}", RAlbaranes.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}", RAlbaranes.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}", RAlbaranes.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}", RAlbaranes.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}", RAlbaranes.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}", RAlbaranes.AcabadosHasta, FkacabadosHasta)); flag = true; } return(sb.ToString()); }