# Prefeituras V5

# Pré-requisitos

    - PHP 7.2
    - PostgreSQL
    - Composer
    - Apache ou Nginx

# Montando o Projeto:

1 - Clonar o Repositorio:
```sh
$  git clone https://git.pbsoft.com.br/Maxima/prefeituras_v4.git
```
2 - Crie um banco de dados para o projeto.

3 - Configurar arquivo .env     
    
    * Copie o arquivo .env.example, que se encontra na pasta raiz do projeto, 
      para um novo arquivo .env
    * Altere os valores de configuração do banco de dados, do servidor de e-mail e chaves do reCaptcha referente 
      as opções mostrado abaixo.
    
    DB_CONNECTION=pgsql
    DB_HOST=10.1.1.13
    DB_PORT=5432
    DB_DATABASE=prefeitura_v5
    DB_USERNAME=postgres
    DB_PASSWORD=postgres
    
    MAIL_DRIVER=smtp
    MAIL_HOST=smtp.mailtrap.io
    MAIL_PORT=2525
    MAIL_USERNAME=null
    MAIL_PASSWORD=null
    MAIL_ENCRYPTION=null 
    
    MAIL_FROM_ADDRESS=suporte@maxima.inf.br
    MAIL_FROM_NAME=Email Contato  
    
    RECAPTCHA_PUBLIC_KEY=
    RECAPTCHA_PRIVATE_KEY=
    
    * Para desenvolvimento altere as seguintes chaves:
    
    APP_ENV=local
    APP_DEBUG=true
    DEBUGBAR_ENABLED=true

4 - Entre na pasta do projeto:

```sh
$  cd <projeto>
$  composer install
$  php artisan migrate --seed
$  php artisan key:generate
$  php artisan storage:link
```

# Configurar Estrutura de Registro de LOGs

Antes, verifique se está funcionando. Se não, para o funcionamento dos registro de LOGs, será necessários fazer algumas alterações seguinte arquivo 

prefeituras_v4/vendor/spatie/laravel-activitylog/src/ActivityLogger.php

- Acrescente uma variavel abaixo da linha 34:

```sh
protected $sentinela;
```

- Instacie o modelo do Sentinel no método __construct():

```sh
Sentinel $sentinela
```

- Substituir condição if dentro do método __construct():

```sh
if (starts_with(app()->version(), '5.1')) {
    $this->causedBy = $auth->driver($this->authDriver)->user();
} else {
    $this->causedBy = $this->sentinela->getUser(); //Definindo o drive do sentinel, pegando usuario logado
}
```

Usuário: suporte@maxima.inf.br e Senha: **********

# Publicação no CPanel

Coloque os arquivos do projeto dentro do diretório /public_html através do Git ou FTP;

Altere o .htaccess que está na raiz do projeto. Adicione o seguinte código:

```
<IfModule mod_rewrite.c>
    #Força o www
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^prefeituras4.maximatecnologia.com.br [NC]
    RewriteRule ^(.*)$ https://www.prefeituras4.maximatecnologia.com.br/$1 [L,R=301]
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine on
    #Força HTTPS
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
    #Redireciona para o diretório /public
    RewriteCond %{REQUEST_URI} !^public
    RewriteRule ^(.*)$ public/$1 [L]
    
</IfModule>
```
Com isso, ao acessar o domínio o projeto já estará funcionando normalmente.

# Geolocalização - Postgis

O funcionamento de geolocalização está inativo por padrão, para o uso do mesmo, será necessário realizar algumas alterções de código em arquivos do projeto;

- Ativar migration:
> Localize o arquivo database/migrations/2018_03_16_192624_create_locations_table
> Adicione a extensão .php no arquivo. Ex: 2018_03_16_192624_create_locations_table.php
- Descomentar códigos na migration de endereço:
> Abra o arquivo database/migrations/2018_03_16_195207_create_addresses_table.php
> Descomente os trechos de códigos comentados. Linhas 27 e 45 a 47.

- Descomentar códigos no model Location:
> Abra o arquivo app/Http/Model/Admin/Location.php
> Descomente todo o código comentado.

- Descomentar códigos no model Address:
> Abra o arquivo app/Http/Model/Admin/Address.php
> Descomente os trechos de códigos  comentados. Linhas 20 e 38 a 41.

- Instale a extensão Postgis no seu banco de dados;
- Dê migrate refresh no projeto.

```sh
$  php artisan migrate:refresh --seed
```


https://www.prefeituras4.maximatecnologia.com.br
7:29 PM

# Sistema de Licitação da versão 2

Para visualizar licitações migradas da versão 2 é preciso adicionar uma configuração que não é nativa. 
Em /cms/configuracoes/create você vai criar uma configuração que vai permitir a visualização das licitações antigas.

Preencha os seguintes campos e salve.

Categoria: Site
Tipo: Checkbox
Título: Licitações Antigas
Pequena Descrição: Exibir
Posição: 30
Chave: licitacoes_old

Para a migração dos dados, em certos cliente algumas tabelas precisam ser criadas:
Obs: substituir 'homestead' que são referentes ao usuário do banco e nome do banco de dados.

``` 
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET client_min_messages = warning;
SET row_security = off;

SET default_tablespace = '';

SET default_with_oids = false;

CREATE TABLE public.biddings_legacys (
    id integer NOT NULL,
    titulo character varying(250) NOT NULL,
    informacoes text NOT NULL,
    data date NOT NULL,
    created_at timestamp(0) without time zone,
    updated_at timestamp(0) without time zone,
    tipo_modalidade character varying(250),
    ids_secretarias character varying(250),
    numero character varying(250),
    cnpj character varying(250)
);

ALTER TABLE public.biddings_legacys OWNER TO homestead;

CREATE SEQUENCE public.biddings_legacys_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER TABLE public.biddings_legacys_id_seq OWNER TO homestead;

ALTER SEQUENCE public.biddings_legacys_id_seq OWNED BY public.biddings_legacys.id;

ALTER TABLE ONLY public.biddings_legacys ALTER COLUMN id SET DEFAULT nextval('public.biddings_legacys_id_seq'::regclass);

ALTER TABLE ONLY public.biddings_legacys
    ADD CONSTRAINT biddings_legacys_pkey PRIMARY KEY (id);

CREATE TABLE public.biddings_legacys_jurisdictional (
    id integer NOT NULL,
    title character varying(250)
);

ALTER TABLE public.biddings_legacys_jurisdictional OWNER TO homestead;

ALTER TABLE ONLY public.biddings_legacys_jurisdictional
    ADD CONSTRAINT id PRIMARY KEY (id);

CREATE TABLE public.biddings_legacys_modalities (
    id integer NOT NULL,
    name character varying(250)
);

ALTER TABLE public.biddings_legacys_modalities OWNER TO homestead;

ALTER TABLE ONLY public.biddings_legacys_modalities
    ADD CONSTRAINT biddings_legacys_modalities_pkey PRIMARY KEY (id);


CREATE TABLE public.archives_biddings_legacy (
    id integer NOT NULL,
    name character varying(250) NOT NULL,
    biddings_legacys_id integer NOT NULL,
    created_at timestamp(0) without time zone,
    updated_at timestamp(0) without time zone,
    title character varying(250)
);


ALTER TABLE public.archives_biddings_legacy OWNER TO homestead;


CREATE SEQUENCE public.archives_biddings_legacy_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public.archives_biddings_legacy_id_seq OWNER TO homestead;


ALTER SEQUENCE public.archives_biddings_legacy_id_seq OWNED BY public.archives_biddings_legacy.id;


ALTER TABLE ONLY public.archives_biddings_legacy ALTER COLUMN id SET DEFAULT nextval('public.archives_biddings_legacy_id_seq'::regclass);

ALTER TABLE ONLY public.archives_biddings_legacy
    ADD CONSTRAINT archives_biddings_legacy_pkey PRIMARY KEY (id);


ALTER TABLE ONLY public.archives_biddings_legacy
    ADD CONSTRAINT biddings_legacys_id FOREIGN KEY (biddings_legacys_id) REFERENCES public.biddings_legacys(id);


```

### Acesso ao sistema demo

<img src="https://www.maximatecnologia.com.br/_assets/imgs/logo.png" width="100px" alt="Logo da Maxima">

[Acessar o painel](https://www.prefeituras4.maximatecnologia.com.br/login)

```
user = suporte@maxima.inf.br
pass = r<nO$=33rc3M}
```