Estacionamiento Medido – Ubicación de archivos fuente y credenciales de acceso

URLs:

APKs:

  • \bg-srv03-fsFSGroupsDesarrollo_PROYECTOSParking Medido BERAZA

ATENCIÓN:

Actualmente, la aplicación factura por MINUTO. Se debe cambiar el valor de 1 a 60 en la línea 178 del archivo /application/models/m_inspection.php

DEMO:

Ubicación de fuentes:

  • CRM Web (PHP): \BG-SRV03-FSFileServerGroupsDesarrollo_PROYECTOSParking Medido BERAZA_prudictivo
  • App usuarios:
    • Android: \BG-SRV03-FSFileServerGroupsDesarrollo_PROYECTOSParking Medido BERAZA_android
    • iOS: \BG-SRV03-FSFileServerGroupsDesarrollo_PROYECTOSParking Medido BERAZA_ios
  • Website usuarios: –

Acceso a servidor de producción (Telefónica):

  • Configuración de VPN, usando el cliente “CISCO VPN Client” (\BG-SRV03-FSFileServerPublicDesarrolloAplicacionesvpnwin-5.0.07.0410 – WinXP- Vista- 7)
    • Host: 200.5.235.41
    • [x] Group Authentication
    • Group Name: municipalidad_berazat
    • Password: 0chF7fPCpk
  • Acceso a VPN (solicitado por CISCO VPN Client):
    • Usuario: nc017501
    • Password: 0cV@@0r!R3N7A*
  • Acceso por WinSCP (una vez conectado a la VPN) para explorar archivos:
    • Host: 172.25.107.143
    • Port: 31337
    • User: upload
    • Password: UPl0ad%%
  • Acceso por PuTTY a MySQL:
    • Host (PuTTY): 172.25.107.143
    • Port (PuTTy): 31337
    • User: upload
    • Password: UPl0ad%%
  • Acceso a MySql (ya dentro de PuTTy):
    • Comando: mysql -u usr_aplic1 -p
    • Password MySQL: Telefonica$200
    • Base de datos: datos

Armado de grillas simples

El armado de una grilla en IGGLOBAL Online consta de los siguientes pasos (partiendo del hecho que existe controlador MVC para dicha grilla):

  1. Sobre el proyecto IGGlobal.Mvc -> Buscar la carpeta “Controllers” -> Abrir el archivo de controlador MVC requerido, por ejemplo CrmController.
  2. Agregar el método de controlador al que hace referencia la grilla. Ejemplo: Ver Archivo Views/Cargos.vbhtml
  3. Sobre la carpeta Scripts -> app -> controllers -> botón derecho -> agregar archivo JavasScript. Dentro de éste archivo se colocará el controlador de AngularJs. El nombre del archivo deberá estar conformado por el concepto de la grilla y el sufijo “Ctrl”. Ejemplo: CargosCtrl.js.
  4. A continuación se muestra un ejemplo de controlador AngularJS (los parámetros “Mk_Cargos” y “MK-1” representan el nombre de la entidad y el ID de acción para cargar la grilla de datos respectivamente):
    function CargosCtrl($scope, $window, $modal, _, StorageService, RequestService, UtilsService) {
        //Llamado a controlador "padre"
        BaseGridCtrl.call(this, $scope, $window, $modal, _, RequestService, "Mk_Cargos", "MK-1");
    
        //Definición de clave primaria
        $scope.keys = ['CoCargo'];
    
        //Acción para creación de nuevo registro
        $scope.create = function () {
            var cns = StorageService.fromSession("empresa");
            $window.location.href = '/Crm/Cargo?_connectionStringId=' + cns;
        }
    
        //Acción para edición de un registro
        $scope.edit = function () {
            var cns = StorageService.fromSession("empresa");
            keys = $scope.getSelectedKeys();
            $window.location.href = '/Crm/Cargo?CoCargo=' + keys.CoCargo + '&_connectionStringId=' + cns;
        }
        
        //Definición de acciones extra
        /*
        $scope.actions = [
           {
               id: '1',
               text: 'Agregar',
               icon: 'fa fa-plus-circle',
               multiselect: false,
               singleselect: false,
               onclick: $scope.agregar
           }
        ]
        */
    }
    
    //Herencia prototipica
    CargosCtrl.prototype = Object.create(BaseGridCtrl.prototype);
    
    //Registro del controlador
    igglobal.controller('CargosCtrl', CargosCtrl);
    

Nomenclatura de stored Procedure para grillas y DataTables

Armado

Todas las grillas del sistema serán completadas mediante el uso de stored procedure que luego serán registrados como consultas disponibles en el módulo DataTables. A continuación detallamos la nomenclatura del armado de los mismos:

  • El stored procedure será nombrado de al siguiente manera: Co_[abreviatura de gestión]_SP_[nombre de la entidad]. Ejemplo: Co_MK_SP_Eventos. Dentro del stored procedure se incluirán todas las restricciones propias que corresponden al SP específicamente (joins, where, etc.). Además incluirá como parámetros opcionales todos los rangos asociados al mismo. De ser necesario, podremos incluir toda la lógica específica para armar la salida del store procedure en custión.
  • El stored procedure realizará la invocación a una función cuyo retorno será de tipo tabla. Nombraremos a esta función utilizando la nomenclatura: Co_[abreviatura de gestión]_FX_[nombre de la entidad]. Dicha función recibirá como parámetro todos los rangos asociadas a la misma que serán inyectados desde el stored procedure que la invoca. La función NO contendrá ninguna lógica en particular sólo la clausula de WHERE específica acorde a los rangos a utilizar. Ejemplo: Co_MK_FX_Eventos. ATENCIÓN: las columnas de la tabla de retorno deberán ser iguales a los alias asignados a las columnas de la vista invocada.
  • Dentro de la función se hará un “SELECT * FROM” de una vista que nombraremos así: Co_[abreviatura de gestión]_FX_[nombre de la entidad]. Ejemplo: Co_MK_VW_Eventos. En la misma haremos la proyección correspondiente, incluyendo una columna para las etiquetas (_tags) y el estado de la fila (_state) y toda la lógica común que podríamos llegar a compartir con diferentes stored procedures/funciones que utilicen dicha función.

Registro en vistas del sistema

A continuación detallaremos los pasos para registrar los stored procedures de las grillas como vistas del sistema:

  • En caso de una nueva grilla: utilizar el SP Codigos_Seg_Vistas_Sistema_insert para el registro de la misma completando los parámetros según corresponda:
    • @Id: dejar en null para que el SP devuelva un ID correlativo.
    • @Modulo: indicar abreviatura de gestión/módulo (ver tabla Codigos_Gestion, columna Abrebiatura)
    • @Descripcion: objetivo de la consulta en cuestión. SER LO MAS PRECISO EN LA REDACCIÓN.
    • @FromTabla: dejar en ” (vacío).
    • @EsStoredProcedure: colocar 1 (true).
    • @NombreStoredProcedure: colocar el nombre del stored procedure.
    • @Tipo: dejar en ” (vacío).
    • @TipoResultado: colocar ‘multiple’ (sin acento).
    • @TipoEntidad: dejar en ” (vacío).
    • @TipoAccionNet: dejar en ” (vacío).
    • @EjecucionSobreInformac: colocar 0 (false) ó 1 (true) según corresponda.
    • @Consolida: colocar 0 (false).
    • @EnviarACache: colocar 0 (false).
  • En caso de ser una grilla existente, modificar la columna NombreStoredProcedure colocando el nuevo nombre de SP a utilizar.
  • En ambos casos, se deberán colocar los rangos del SP en la tabla Codigos_Seg_Vistas_Rangos.
  • Verificar las claves de los rangos y los nombre de los parámetros en la tabla Codigos_DefinicionesRangos_Net. Donde:
    • CLAVE: es el identificador único del rango.
    • DDFORMULACRYSTAL: valor a tomar en cuenta para el nombre del parámetro DESDE del SP. Ejemplo: DDFecha.
    • HHFORMULACRYSTAL: valor a tomar en cuenta para el nombre del parámetro HASTA del SP. Ejemplo: HHFecha.

En caso de necesitar un nuevo rango coordinar con LPERDOMO y FHERMO.

Registro en DataTables

A continuación detallaremos los pasos para registrar los stored procedures de las grillas como DataTables en el módulo Analytics:

  • Incorporar un nuevo registro en la tabla Codigos_Query de la base de datos INFORMAC_DESARROLLO. El id del query se armará: [número de gestión]0000, siendo estos últimos números establecidos de manera correlativa a medida que agregamos consultas. Ejemplo: 90002 – Eventos. Colocaremos en la columna GestionId el número de gestión correspondiente (ver tabla Codigos_Gestion).
  • A continuación ingresaremos en la tabla Codigos_Query_Columnas las columnas que devuelve la consulta, indicando el orden y el alias de las columnas. Para éstos casos, en la columna Tabla_Id pondremos el mismo valor que colocamos en la columna Alias.
  • Finalmente, ingresaremos los rangos asociados a la consulta en la tabla Codigos_Query_Rangos, los cuales, serán los mismos que definimos anteriormente en la tabla Codigos_Seg_Vistas_Rangos

Estacionamiento Medido – Publicación de CRM (Berazategui)

  1. Verificar la entrada “Estacionamiento Medido – Ubicación de archivos fuente y credenciales de acceso” para conocer credenciales de acceso al fuente.
  2. Utilizando el programa WinSCP, primero realizar una copia del código en producción (ventana derecha) a la ubicación: \BG-SRV03-FSFileServerGroupsDesarrollo_PROYECTOSParking Medido BERAZA_prudictivo colocando todo el fuente en un archivo zip de nombre parking_crm_ok_añomesdia de bajada de productivo. Ejemplo: parkingcrm_ok_20150827.zip
  3. Borrar los archivos de productivo y subir una copia de la nueva versión desde la máquina local al servidor de productivo.
  4. Ejecutar PuTTy para correr los scripts de MySql que contengan los cambios en las tablas de la base de datos.

Publicación en Azure Web Apps (sites)

El objetivo del siguiente instructivo es detallar los pasos a seguir para la publicación de aplicaciones web en Azure:

  • Dentro de “Explorador de Soluciones” de Visual Studio -> Archivo Web.config -> Editar la entrada con el nombre “informac” dentro de la sección “connectionStrings” colocando los datos de conexión a la base INFORMAC correspondientes a la publicación.
  • Dentro de “Explorador de Soluciones” de Visual Studio -> Botón derecho sobre el proyecto a publicar -> seleccionar la opción “Publicar…”. Si la opción no está habilitada verificar si el proyecto se encuentra en ejecución. De ser así, detener el proyecto y luego la opción estará disponible.
  • En la pantalla de publicación -> Hacer click en la opción lateral “Perfil”.
  • Dentro de la opción “Perfil” -> Seleccionar de la lista desplegable el perfil que corresponda al sitio destino. El formato del nombre del perfil será: “igglobal[nombre del cliente] – Web Deploy“, por ejemplo: “igglobalbaseglobal – Web Deploy”.
  • En caso de aparecer el perfil buscado en la lista desplegable -> Hacer click en la opción “Importar”, luego navegar a la ubicación [\Bg-srv03-fsfsGroupsDesarrollo_PROYECTOSAzure – Perfiles de Publicación] y seleccionar el *.PublishSettings correspondiente al sitio.
  • A continuación presionar el botón “Publicar”.
  • Si todo funcionó correctamente, al terminar el proceso de publicación se abrirá una nueva ventana o solapa de navegador mostrando la versión publicada.

 

 


Integración de ASP.NET MVC con Google APIs

Objetivos

El presente proyecto tiene como objetivo realizar una librería reutilizable que permita integrar los servicios Gmail, Calendar, Contacts y Drive ofrecidos por Google a través de sus APIs públicas y privadas (con autenticación OAuth 2.0) utilizando tecnologías ASP.NET MVC.

Además se buscará realizar la integración de la librería resultante al producto IGGLOBAL Online con el fin de extender su funcionalidad en módulos como CRM, Ventas, Compras, entre otros.

Implementación

El proyecto está representado por una solución de Visual Studio 2013 en donde se encuentran los siguientes proyectos:

  • GoogleCalendar.Mvc: proyecto que integra servicios de Google Calendar.
  • GoogleContacs.Mvc: proyecto que integra servicios de Google Contacts.
  • GoogleDrive.Mvc: proyecto que integra servicios de Google Drive.
  • GoogleGmail.Mvc: proyecto que integra servicios de Google Gmail.

Se utilizaron librerías oficiales de Google (vía NuGet) para el consumo de los datos a través de endpoints JSON.

Estado: Completo

Ubicación: \bg-srv03-fsFSGroupsDesarrollo_PROYECTOSGoogleApis.Mvc