Esempio n. 1
0
        public async Task <IActionResult> Registro(RegistroModelo model)
        {
            if (ModelState.IsValid)
            {
                var user = new UsuarioAplicacacion
                {
                    UserName  = model.Email,
                    Email     = model.Email,
                    ayudaPass = model.ayudaPass
                };

                //Se guarda la data del usuario en la tabla de base de datos AspNetUser
                var resultado = await gestionUsuarios.CreateAsync(user, model.Password);

                //si el usuario se creo correctamente se logea y se redirige al inicio
                if (resultado.Succeeded)
                {
                    if (gestionLogin.IsSignedIn(User) && User.IsInRole("Administracion"))
                    {
                        return(RedirectToAction("ListarUsuarios", "Administracion"));
                    }

                    await gestionLogin.SignInAsync(user, isPersistent : false);

                    return(RedirectToAction("index", "home"));
                }

                //control del erroe en caso de que se produzca
                foreach (var error in resultado.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }
            return(View(model));
        }
Esempio n. 2
0
        public async Task <IActionResult> Registro_Usuario([FromBody] RegistroModelo modelo)
        {
            var userExists = await usuarioManager.FindByNameAsync(modelo.Username);

            if (userExists != null)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, new Respuesta {
                    Estado = "Error", Mensaje = "el usuario ya existe!"
                }));
            }

            AplicacionUsuario user = new()
            {
                Email         = modelo.Email,
                SecurityStamp = Guid.NewGuid().ToString(),
                UserName      = modelo.Username
            };
            var result = await usuarioManager.CreateAsync(user, modelo.Password);

            if (!result.Succeeded)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError,
                                  new Respuesta
                {
                    Estado = "Error", Mensaje = "Error al crear el usuario, chechee los detalles he intentelo de nuevo."
                }));
            }

            return(Ok(new Respuesta {
                Estado = "Success", Mensaje = "Usuario creado con exito!"
            }));
        }
    }
        public IActionResult GetModelos()
        {
            try
            {
                EfetuarPrevisao efetuaModelos = new EfetuarPrevisao(configuration, logger);
                var             modelos       = efetuaModelos.CarregaModeloMetrica();

                if (modelos == null)
                {
                    modelos = new RegistroModelo();
                }

                Dictionary <string, object> param = new Dictionary <string, object>
                {
                    { "filiais", modelos.Filial.ToString() },
                    { "modelos", modelos.Secao.ToString() },
                    { "rmse", modelos.RootMeanSquaredError.ToString("N2") }
                };
                return(Json(param));
            }
            catch (Exception ex)
            {
                logger.LogError(ex, "Consulta modelos");
                throw ex;
            }
        }
        private void GravarModelo(RegistroModelo registroModelo)
        {
            DalConnection dal = new DalConnection(configuration, logger);

            try
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("DELETE FROM DSDH_MODELOS_CMV");
                sb.AppendLine("WHERE FILIAL = &FIL");
                sb.AppendLine("AND SECAO = &SEC");
                sb.AppendLine("AND GRUPO = &GRP");
                sb.AppendLine("AND SUBGRUPO = &SGRP");

                Dictionary <string, object> param = new Dictionary <string, object>
                {
                    { "FIL", registroModelo.Filial },
                    { "SEC", registroModelo.Secao },
                    { "GRP", registroModelo.Grupo },
                    { "SGRP", registroModelo.SubGrupo }
                };

                dal.ExecuteNonQuery(sb, param);

                sb = new StringBuilder();
                sb.AppendLine("INSERT INTO DSDH_MODELOS_CMV (");
                sb.AppendLine("FILIAL, SECAO, GRUPO, SUBGRUPO,");
                sb.AppendLine("MEANABSOLUTEERROR,MEANSQUAREDERROR,ROOTMEANSQUAREDERROR,");
                sb.AppendLine("LOSSFUNC,RSQUARED,MODELO)");
                sb.AppendLine("VALUES (&FIL, &SEC, &GRP, &SGRP,");
                sb.AppendLine("&MAB, &MSE, &RMSE, &LSFNC, &RSQ, &MDL)");

                param = new Dictionary <string, object>
                {
                    { "FIL", registroModelo.Filial },
                    { "SEC", registroModelo.Secao },
                    { "GRP", registroModelo.Grupo },
                    { "SGRP", registroModelo.SubGrupo },
                    { "MAB", registroModelo.MeanAbsoluteError },
                    { "MSE", registroModelo.MeanSquaredError },
                    { "RMSE", registroModelo.RootMeanSquaredError },
                    { "LSFNC", registroModelo.LossFunc },
                    { "RSQ", registroModelo.RSquared },
                    { "MDL", registroModelo.Modelo }
                };

                dal.ExecuteNonQuery(sb, param);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                dal = null;
            }
        }
Esempio n. 5
0
        private void GravaPrevisoes(List <RegistroCmv> previsoes, RegistroModelo modelo)
        {
            DalConnection dal = new DalConnection(configuration, logger);

            try
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("DELETE FROM DSDH_PREVISAO_CMV");
                sb.AppendLine("WHERE FILIAL = &FIL");
                sb.AppendLine("AND SECAO = &SEC");
                sb.AppendLine("AND GRUPO = &GRP");
                sb.AppendLine("AND SUBGRUPO = &SGRP");

                Dictionary <string, object> param = new Dictionary <string, object>
                {
                    { "FIL", modelo.Filial },
                    { "SEC", modelo.Secao },
                    { "GRP", modelo.Grupo },
                    { "SGRP", modelo.SubGrupo }
                };

                dal.ExecuteNonQuery(sb, param);

                sb = new StringBuilder();
                sb.AppendLine("INSERT INTO DSDH_PREVISAO_CMV (");
                sb.AppendLine("DIA, FILIAL, SECAO, GRUPO, SUBGRUPO, CMV )");
                sb.AppendLine("VALUES (&DIA, &FIL, &SEC, &GRP, &SGRP, &CMV)");

                foreach (var previsao in previsoes)
                {
                    param = new Dictionary <string, object>
                    {
                        { "DIA", ((previsao.Dia.Year - 1900) * 100 + previsao.Dia.Month) * 100 + previsao.Dia.Day },
                        { "FIL", modelo.Filial },
                        { "SEC", modelo.Secao },
                        { "GRP", modelo.Grupo },
                        { "SGRP", modelo.SubGrupo },
                        { "CMV", Math.Round(previsao.Valor, 2) }
                    };

                    dal.ExecuteNonQuery(sb, param);
                }
            }
            catch
            {
                throw;
            }
            finally
            {
                dal = null;
            }
        }
        public ModelOutput Predict(ModelInput input, RegistroModelo registroModelo)
        {
            Stream stream = new MemoryStream(registroModelo.Modelo);
            // Create new MLContext
            MLContext mlContext = new MLContext();

            // Load model & create prediction engine
            ITransformer mlModel    = mlContext.Model.Load(stream, out var modelInputSchema);
            var          predEngine = mlContext.Model.CreatePredictionEngine <ModelInput, ModelOutput>(mlModel);

            // Use model to make prediction on input data
            ModelOutput result = predEngine.Predict(input);

            return(result);
        }
Esempio n. 7
0
        public RegistroModelo CarregaModeloMetrica()
        {
            DalConnection dal = new DalConnection(configuration, logger);

            try
            {
                RegistroModelo registro = new RegistroModelo();
                StringBuilder  sb       = new StringBuilder();

                sb.AppendLine("SELECT count(distinct FILIAL) filial, ");
                sb.AppendLine("       count(1) MODELOS,              ");
                sb.AppendLine("       round(avg(rootmeansquarederror), 2) rmse ");
                sb.AppendLine("FROM DSDH_MODELOS_CMV                 ");

                var dt = dal.ExecuteQuery(sb, null);

                if (dt != null && dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        foreach (DataColumn dc in dt.Columns)
                        {
                            switch (dc.ColumnName.ToUpper())
                            {
                            case "FILIAL": registro.Filial = Convert.ToInt32(dr[dc]); break;

                            case "MODELOS": registro.Secao = Convert.ToInt32(dr[dc]); break;

                            case "RMSE": registro.RootMeanSquaredError = Convert.ToSingle(dr[dc]); break;

                            default:
                                break;
                            }
                        }
                    }
                }

                return(registro);
            }
            catch
            {
                throw;
            }
            finally
            {
                dal = null;
            }
        }
Esempio n. 8
0
        private List <RegistroCmv> EfetuaPrevisao(DateTime dtIni, DateTime dtFim, RegistroModelo modelo)
        {
            ConsomeModel       ml            = new ConsomeModel();
            TransformData      transformData = new TransformData();
            List <ModelInput>  modelInputs   = new List <ModelInput>();
            List <RegistroCmv> registroCmvs  = new List <RegistroCmv>();
            var dtAtual = dtIni;

            do
            {
                registroCmvs.Add(new RegistroCmv {
                    Dia = dtAtual
                });
                dtAtual = dtAtual.AddDays(1);
            } while (dtAtual <= dtFim);

            foreach (var registro in registroCmvs)
            {
                registro.Feriado = VerificaFeriado(registro.Dia, modelo.Filial);
                var clima = CarregaClima(registro.Dia, modelo.Filial);

                if (clima != null)
                {
                    registro.MaxTempC = clima.MaxTempC;
                    registro.MinTempC = clima.MinTempC;
                    registro.AvgTempC = clima.AvgTempC;
                    registro.PrecipMm = clima.PrecipMm;
                }
            }

            modelInputs = transformData.TransformaDados(registroCmvs);
            int atual = 0;

            foreach (var item in modelInputs)
            {
                var result = ml.Predict(item, modelo);
                if (result.Score < 0)
                {
                    result.Score = 0;
                }

                registroCmvs[atual].Valor = result.Score;
                atual++;
            }

            return(registroCmvs);
        }
Esempio n. 9
0
        public RegistroModelo CreateModel(List <ModelInput> modelInputs)
        {
            IDataView trainingDataView = mlContext.Data.LoadFromEnumerable(modelInputs);

            IEstimator <ITransformer> trainingPipeline = BuildTrainingPipeline(mlContext);

            var crossValidationResults = Evalute(mlContext, trainingDataView, trainingPipeline);

            ITransformer mlModel = TrainModel(mlContext, trainingDataView, trainingPipeline);

            MemoryStream memoryStream = SaveModel(mlContext, mlModel, trainingDataView.Schema);

            RegistroModelo registroModelo = new RegistroModelo
            {
                LossFunc = crossValidationResults != null?crossValidationResults.Select(r => r.Metrics.LossFunction).Average() : 0,
                               MeanAbsoluteError = crossValidationResults != null?crossValidationResults.Select(r => r.Metrics.MeanAbsoluteError).Average() : 0,
                                                       MeanSquaredError = crossValidationResults != null?crossValidationResults.Select(r => r.Metrics.MeanSquaredError).Average() : 0,
                                                                              RootMeanSquaredError = crossValidationResults != null?crossValidationResults.Select(r => r.Metrics.RootMeanSquaredError).Average() : 0,
                                                                                                         RSquared = crossValidationResults != null?crossValidationResults.Select(r => r.Metrics.RSquared).Average() : 0,
                                                                                                                        Modelo = memoryStream.ToArray()
            };

            return(registroModelo);
        }
Esempio n. 10
0
        public List <RegistroModelo> CarregaModelosMetricas()
        {
            DalConnection         dal             = new DalConnection(configuration, logger);
            List <RegistroModelo> registroModelos = null;

            try
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("SELECT FILIAL, SECAO, GRUPO, SUBGRUPO,");
                sb.AppendLine("ROUND(MEANABSOLUTEERROR, 2) MEANABSOLUTEERROR, ROUND(MEANSQUAREDERROR, 2) MEANSQUAREDERROR, ROUND(ROOTMEANSQUAREDERROR, 2) ROOTMEANSQUAREDERROR");
                sb.AppendLine("FROM DSDH_MODELOS_CMV");
                sb.AppendLine("ORDER BY FILIAL, SECAO, GRUPO, SUBGRUPO");

                var dt = dal.ExecuteQuery(sb, null);

                if (dt != null && dt.Rows.Count > 0)
                {
                    registroModelos = new List <RegistroModelo>();

                    foreach (DataRow dr in dt.Rows)
                    {
                        RegistroModelo modelo = new RegistroModelo();

                        foreach (DataColumn dc in dt.Columns)
                        {
                            switch (dc.ColumnName.ToUpper())
                            {
                            case "FILIAL": modelo.Filial = Convert.ToInt32(dr[dc]); break;

                            case "SECAO": modelo.Secao = Convert.ToInt32(dr[dc]); break;

                            case "GRUPO": modelo.Grupo = Convert.ToInt32(dr[dc]); break;

                            case "SUBGRUPO": modelo.SubGrupo = Convert.ToInt32(dr[dc]); break;

                            case "MODELO": modelo.Modelo = dr[dc] != DBNull.Value ? (byte[])dr[dc] : null; break;

                            case "MEANABSOLUTEERROR": modelo.MeanAbsoluteError = Convert.ToDouble(dr[dc]); break;

                            case "MEANSQUAREDERROR": modelo.MeanSquaredError = Convert.ToDouble(dr[dc]); break;

                            case "ROOTMEANSQUAREDERROR": modelo.RootMeanSquaredError = Convert.ToDouble(dr[dc]); break;

                            default:
                                break;
                            }
                        }

                        registroModelos.Add(modelo);
                    }
                }

                return(registroModelos);
            }
            catch
            {
                throw;
            }
            finally
            {
                dal = null;
            }
        }