Ejemplo n.º 1
0
        /**
         * Realizamos la carga de los acreditados
         */
        public void uploadAcreditado(String path)
        {
            SUAHelper sua = null;
            Boolean isError = false;
            try
            {
                sua = new SUAHelper(path);

                ParametrosHelper parameterHelper = new ParametrosHelper();

                Parametro smdfParameter = parameterHelper.getParameterByKey("SMDF");
                Parametro sinfonParameter = parameterHelper.getParameterByKey("SINFON");

                //Preparamos la consulta
                String sSQL = "SELECT a.REG_PATR , a.NUM_AFIL, a.CURP      , a.RFC_CURP, a.NOM_ASEG, " +
                              "       a.SAL_IMSS , a.SAL_INFO, a.FEC_ALT   , a.FEC_BAJ , a.TIP_TRA , " +
                              "       a.SEM_JORD , a.PAG_INFO, a.TIP_DSC   , a.VAL_DSC , a.CVE_UBC , " +
                              "       a.TMP_NOM  , a.FEC_DSC , a.FEC_FinDsc, a.ARTI_33 , a.SAL_AR33," +
                              "       a.TRA_PENIV, a.ESTADO  , a.CVE_MUN   , b.OCUPA   , b.LUG_NAC  " +
                              "  FROM Asegura a LEFT JOIN Afiliacion b  " +
                              "    ON a.REG_PATR = b.REG_PATR AND  a.NUM_AFIL = b.NUM_AFIL " +
                              "  WHERE a.PAG_INFO <> '' " +
                              "  ORDER BY a.REG_PATR, a.NUM_AFIL ";

                DataTable dt = sua.ejecutarSQL(sSQL);

                foreach (DataRow rows in dt.Rows)
                {
                    String patronDescripcion = rows["REG_PATR"].ToString();
                    Patrone patron = new Patrone();
                    if (!patronDescripcion.Equals(""))
                    {
                        var patronTemp = from b in db.Patrones
                                         where b.registro.Equals(patronDescripcion.Trim())
                                         select b;

                        if (patronTemp != null && patronTemp.Count() > 0)
                        {
                            foreach (var patronItem in patronTemp)
                            {
                                patron = patronItem;
                                break;
                            }//Definimos los valores para la plaza
                        }
                        else
                        {
                            patron.registro = "";
                        }

                    }

                    if (!patron.registro.Trim().Equals(""))
                    {
                        Boolean bExist = false;

                        //Creamos el nuevo asegurado
                        Acreditado acreditado = new Acreditado();
                        String numAfil = rows["NUM_AFIL"].ToString().Trim();
                        String numCred = rows["PAG_INFO"].ToString().Trim();

                        //Revisamos la existencia del registro
                        var acreditadoExist = from b in db.Acreditados
                                              where b.Patrone.registro.Equals(patron.registro.Trim())
                                                && b.numeroAfiliacion.Equals(numAfil)
                                                && b.numeroCredito.Equals(numCred)
                                              select b;

                        if (acreditadoExist != null && acreditadoExist.Count() > 0)
                        {
                            foreach (var acred in acreditadoExist)
                            {
                                acreditado = acred;
                                bExist = true;
                                break;
                            }//Borramos cada registro.
                        }//Ya existen datos con este patron?

                        String tipoDescuento = rows["TIP_DSC"].ToString();

                        acreditado.PatroneId = patron.Id;
                        acreditado.Patrone = patron;
                        acreditado.numeroAfiliacion = rows["NUM_AFIL"].ToString();
                        acreditado.CURP = rows["CURP"].ToString();
                        acreditado.RFC = rows["RFC_CURP"].ToString();

                        String cliente = rows["CVE_UBC"].ToString();

                        var clienteTemp = db.Clientes.Where(b => b.claveCliente == cliente.Trim()).FirstOrDefault();
                        var clienteTemp2 = db.Clientes.Where(b => b.claveCliente.Equals("SIN CODIGO")).FirstOrDefault();

                        if (clienteTemp != null)
                        {
                            acreditado.Cliente = (Cliente)clienteTemp;
                            acreditado.clienteId = clienteTemp.Id;
                        }
                        else
                        {
                            acreditado.Cliente = (Cliente)clienteTemp2;
                            acreditado.clienteId = clienteTemp2.Id; ;

                            //Cliente clienteNuevo = new Cliente();
                            //clienteNuevo.claveCliente = cliente;
                            //clienteNuevo.rfc = "PENDIENTE";
                            //clienteNuevo.claveSua = "PENDIENTE";
                            //clienteNuevo.descripcion = "PENDIENTE";
                            //clienteNuevo.ejecutivo = "PENDIENTE";
                            //clienteNuevo.Plaza_id = 1;
                            //clienteNuevo.Grupo_id = 4;

                            //try
                            //{
                            //    db.Clientes.Add(clienteNuevo);
                            //    db.SaveChanges();
                            //    acreditado.clienteId = clienteNuevo.Id;
                            //}
                            //catch (DbEntityValidationException dbEx)
                            //{
                            //    foreach (var validationErrors in dbEx.EntityValidationErrors)
                            //    {
                            //        foreach (var validationError in validationErrors.ValidationErrors)
                            //        {
                            //            Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage);
                            //        }
                            //    }
                            //}

                        }

                        String nombrePattern = rows["NOM_ASEG"].ToString();
                        nombrePattern = nombrePattern.Replace("$", ",");

                        string[] substrings = Regex.Split(nombrePattern, ",");

                        acreditado.nombre = substrings[2];
                        acreditado.apellidoPaterno = substrings[0];
                        acreditado.apellidoMaterno = substrings[1];
                        acreditado.nombreCompleto = substrings[0] + " " + substrings[1] + " " + substrings[2];
                        acreditado.ocupacion = rows["OCUPA"].ToString();
                        acreditado.fechaAlta = DateTime.Parse(rows["FEC_ALT"].ToString());

                        if (rows["FEC_BAJ"].ToString().Equals(""))
                        {
                            acreditado.fechaBaja = null;
                        }
                        else
                        {
                            acreditado.fechaBaja = DateTime.Parse(rows["FEC_BAJ"].ToString());
                        }//Trae fecha valida?

                        acreditado.idGrupo = "";
                        acreditado.numeroCredito = rows["PAG_INFO"].ToString();

                        if (rows["FEC_DSC"].ToString().Equals(""))
                        {
                            acreditado.fechaInicioDescuento = null;
                        }
                        else
                        {
                            acreditado.fechaInicioDescuento = DateTime.Parse(rows["FEC_DSC"].ToString());
                        }//Trae fecha valida?

                        if (rows["FEC_FinDsc"].ToString().Equals(""))
                        {
                            acreditado.fechaFinDescuento = null;
                        }
                        else
                        {
                            acreditado.fechaFinDescuento = DateTime.Parse(rows["FEC_FinDsc"].ToString());
                        }//Trae fecha valida?

                        DateTime date = DateTime.Now;

                        //Validamos que el ultimo movimiento no sea por baja o suspención.
                        if (sua.esValidoActualizarPorMovimiento(acreditado.Patrone.registro, acreditado.numeroAfiliacion))
                        {
                            //Validamos que el valor de los parametros sea mayor a cero.
                            if (sinfonParameter.valorMoneda > 0 && smdfParameter.valorMoneda > 0)
                            {

                                if (bExist) {
                                    if(acreditado.fechaUltimoCalculo != null){
                                //Validamos que se haya modificado el valor de los parametros para el calculo
                                        if (DateTime.Compare((DateTime)acreditado.fechaUltimoCalculo, smdfParameter.fechaCreacion) <= 0
                                        && DateTime.Compare((DateTime)acreditado.fechaUltimoCalculo, sinfonParameter.fechaCreacion) <= 0)
                                        {
                                            acreditado = calcularInfonavitInfo(acreditado, rows, tipoDescuento, Decimal.Parse(sinfonParameter.valorMoneda.ToString()), Decimal.Parse(smdfParameter.valorMoneda.ToString()));

                                        } //Se ha cambiado los parametros desde la ultima actualización ?
                                    }else{
                                        acreditado = calcularInfonavitInfo(acreditado, rows, tipoDescuento, Decimal.Parse(sinfonParameter.valorMoneda.ToString()), Decimal.Parse(smdfParameter.valorMoneda.ToString()));
                                    }
                                }
                                else
                                {
                                    acreditado = calcularInfonavitInfo(acreditado, rows, tipoDescuento, Decimal.Parse(sinfonParameter.valorMoneda.ToString()), Decimal.Parse(smdfParameter.valorMoneda.ToString()));
                                }
                            }//Los parametros son mayores a cero en su valor moneda ?
                        }//El movimiento es por baja o suspención ?

                        acreditado.Plaza_id = patron.Plaza_id;

                        if (!bExist)
                        {
                            acreditado.fechaCreacion = date;
                        }
                        else {
                            acreditado.fechaModificacion = date;
                        }

                        //Guardamos el asegurado
                        try
                        {
                            if (!bExist)
                            {
                                db.Acreditados.Add(acreditado);
                            }
                            else {
                                db.Entry(acreditado).State = EntityState.Modified;
                            }
                            db.SaveChanges();
                        }
                        catch (DbEntityValidationException ex)
                        {
                            StringBuilder sb = new StringBuilder();

                            foreach (var failure in ex.EntityValidationErrors)
                            {
                                sb.AppendFormat("{0} failed validation\n", failure.Entry.Entity.GetType());
                                foreach (var error in failure.ValidationErrors)
                                {
                                    sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage);
                                    sb.AppendLine();
                                }
                            }
                        }
                    }
                }

            }
            catch (OleDbException ex)
            {
                if (ex.Source != null)
                {
                    Console.WriteLine(ex.Source);
                    isError = true;
                }
            }
            finally
            {
                if (isError)
                {
                    TempData["error"] = isError;
                    TempData["viewMessage"] = "Ocurrio un error al intentar cargar el archivo de los Acreditados";
                }
                else
                {
                    TempData["error"] = isError;
                    TempData["viewMessage"] = "Se ha realizado la actualización con exito!";
                }
                if (sua != null)
                {
                    sua.cerrarConexion();
                }
            }
        }