public async Task <IActionResult> Put(int key, string values)
        {
            var model = _uow.GetObjectByKey <Empresas>(key, true);

            if (model == null)
            {
                return(StatusCode(409, "Object not found"));
            }

            var viewModel = new EmpresasViewModel {
                Pk_Empresa   = model.Pk_Empresa,
                RFC          = model.RFC,
                Denominacion = model.Denominacion,
                Archivo_Cert = model.Archivo_Cert,
                Archivo_Key  = model.Archivo_Key,
                Llave        = model.Llave,
                Inicio       = model.Inicio,
                Fin          = model.Fin
            };

            var valuesDict = JsonConvert.DeserializeObject <IDictionary>(values);

            PopulateViewModel(viewModel, valuesDict);

            if (!TryValidateModel(viewModel))
            {
                return(BadRequest(GetFullErrorMessage(ModelState)));
            }

            CopyToModel(viewModel, model);

            await _uow.CommitChangesAsync();

            return(Ok());
        }
 private void PopulateViewModel(EmpresasViewModel viewModel, IDictionary values)
 {
     if (values.Contains(PK_EMPRESA))
     {
         viewModel.Pk_Empresa = Convert.ToInt32(values[PK_EMPRESA]);
     }
     if (values.Contains(RFC))
     {
         viewModel.RFC = Convert.ToString(values[RFC]);
     }
     if (values.Contains(DENOMINACION))
     {
         viewModel.Denominacion = Convert.ToString(values[DENOMINACION]);
     }
     if (values.Contains(ARCHIVO_CERT))
     {
         viewModel.Archivo_Cert = Convert.ToString(values[ARCHIVO_CERT]);
     }
     if (values.Contains(ARCHIVO_KEY))
     {
         viewModel.Archivo_Key = Convert.ToString(values[ARCHIVO_KEY]);
     }
     if (values.Contains(LLAVE))
     {
         viewModel.Llave = Convert.ToString(values[LLAVE]);
     }
     if (values.Contains(INICIO))
     {
         viewModel.Inicio = Convert.ToDateTime(values[INICIO]);
     }
     if (values.Contains(FIN))
     {
         viewModel.Fin = Convert.ToDateTime(values[FIN]);
     }
 }
 private void CopyToModel(EmpresasViewModel viewModel, Empresas model)
 {
     model.Pk_Empresa   = viewModel.Pk_Empresa;
     model.RFC          = viewModel.RFC;
     model.Denominacion = viewModel.Denominacion;
     model.Archivo_Cert = viewModel.Archivo_Cert;
     model.Archivo_Key  = viewModel.Archivo_Key;
     model.Llave        = viewModel.Llave;
     model.Inicio       = viewModel.Inicio;
     model.Fin          = viewModel.Fin;
 }
        public async Task <IActionResult> Post(string values)
        {
            var model      = new Empresas(_uow);
            var viewModel  = new EmpresasViewModel();
            var valuesDict = JsonConvert.DeserializeObject <IDictionary>(values);

            PopulateViewModel(viewModel, valuesDict);

            if (!TryValidateModel(viewModel))
            {
                return(BadRequest(GetFullErrorMessage(ModelState)));
            }

            CopyToModel(viewModel, model);

            await _uow.CommitChangesAsync();

            return(Json(model.Pk_Empresa));
        }