191 lines
4.5 KiB
Go
191 lines
4.5 KiB
Go
package cedulados
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"git.maximotejeda.com/maximo/cedulados-bot/internal/application/domain"
|
|
ced "git.maximotejeda.com/maximo/cedulados/proto/golang/cedulados"
|
|
"google.golang.org/grpc"
|
|
)
|
|
|
|
// Adapter
|
|
type Adapter struct {
|
|
cedulados ced.QueryCeduladoClient
|
|
conn *grpc.ClientConn
|
|
}
|
|
// NewAdapter
|
|
func NewAdapter(conn *grpc.ClientConn) (*Adapter, error){
|
|
client := ced.NewQueryCeduladoClient(conn)
|
|
if client == nil{
|
|
fmt.Println("error creating client, cant be nil" )
|
|
}
|
|
return &Adapter{cedulados: client, conn: conn}, nil
|
|
}
|
|
// CeduladoByCedula
|
|
func(a Adapter) CeduladoByCedula(ctx context.Context, c *domain.Cedula)(resp *domain.Info, err error){
|
|
cReq := &ced.QueryByCedulaRequest{
|
|
Cedula: &ced.Cedula{
|
|
MunCed: c.MunCed,
|
|
SeqCed: c.SeqCed,
|
|
VerCed: c.VerCed,
|
|
},
|
|
}
|
|
r, err := a.cedulados.CeduladosByCedula(ctx, cReq)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
resp = mapLocalDomain (r.Cedulado)
|
|
return
|
|
}
|
|
// CeduladoGetByNameLastName
|
|
func(a Adapter) CeduladoGetByNameLastName(ctx context.Context, params domain.Info, page int64)(info *domain.MultipleResults, err error){
|
|
cReq := &ced.QueryByNameLastNameRequest{
|
|
Name: params.Nombres,
|
|
Apellido_1: params.Apellido1,
|
|
Apellido_2: params.Apellido2,
|
|
Page: page,
|
|
}
|
|
r, err := a.cedulados.CeduladosByNameLastName(ctx, cReq)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
info = &domain.MultipleResults{
|
|
Page: r.Page,
|
|
Total: r.Total,
|
|
}
|
|
for _, val := range r.Cedulados{
|
|
info.Data = append(info.Data, mapLocalDomain (val))
|
|
}
|
|
return
|
|
}
|
|
|
|
// CeduladoByFTS
|
|
func(a Adapter) CeduladoByFTS(ctx context.Context, params string, page int64)(info *domain.MultipleResults, err error){
|
|
cReq := &ced.QueryByFTSRequest{
|
|
Name: params,
|
|
Page: page,
|
|
}
|
|
r, err := a.cedulados.CeduladosByFTS(ctx, cReq)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
info = &domain.MultipleResults{
|
|
Page: r.Page,
|
|
Total: r.Total,
|
|
}
|
|
for _, val := range r.Cedulados{
|
|
info.Data = append(info.Data, mapLocalDomain ( val))
|
|
}
|
|
return
|
|
}
|
|
|
|
// CeduladoByNameAndLocation
|
|
func(a Adapter) CeduladoByNameAndLocation(ctx context.Context, params domain.Info, page int64, municipio string)(info *domain.MultipleResults, err error){
|
|
cReq := &ced.QueryByNamesLocationRequest{
|
|
Name: params.Nombres,
|
|
Apellido_1: params.Apellido1,
|
|
Apellido_2: params.Apellido2,
|
|
Municipio: municipio,
|
|
Page: page,
|
|
}
|
|
r, err := a.cedulados.CeduladosByNameAndLocation(ctx, cReq)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
info = &domain.MultipleResults{
|
|
Page: r.Page,
|
|
Total: r.Total,
|
|
}
|
|
for _, val := range r.Cedulados{
|
|
info.Data = append(info.Data, mapLocalDomain ( val))
|
|
}
|
|
return
|
|
}
|
|
// QueryFotoByCedula
|
|
func(a Adapter) QueryFotoByCedula(ctx context.Context, c *domain.Cedula)(info *domain.Foto, err error){
|
|
cReq := &ced.QueryFotoByCedulaRequest{
|
|
Cedula: &ced.Cedula{
|
|
MunCed: c.MunCed,
|
|
SeqCed: c.SeqCed,
|
|
VerCed: c.VerCed,
|
|
},
|
|
}
|
|
|
|
r, err := a.cedulados.QueryFotoByCedula(ctx, cReq)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
// here should be a photo
|
|
info = &domain.Foto{}
|
|
info.Imagen = r.Foto.Foto
|
|
info.MunCed = c.MunCed
|
|
info.SeqCed = c.SeqCed
|
|
info.VerCed = c.VerCed
|
|
info.ID = r.Foto.Id
|
|
return
|
|
}
|
|
// QueryFotoByID
|
|
func(a Adapter) QueryFotoByID(ctx context.Context, id int64)(info *domain.Foto, err error){
|
|
r, err := a.cedulados.QueryFotoById(ctx, &ced.QueryFotoByIdRequest{Id: id})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
info = &domain.Foto{}
|
|
info.Imagen = r.Foto.Foto
|
|
info.ID = r.Foto.Id
|
|
info.MunCed = r.Foto.MunCed
|
|
info.VerCed = r.Foto.VerCed
|
|
info.SeqCed = r.Foto.SeqCed
|
|
return
|
|
}
|
|
// QueryFotoAllCedulas
|
|
func(a Adapter) QueryFotoAllCedulas(ctx context.Context, ceds []*domain.Cedula)(fotos []*domain.Foto, err error){
|
|
for _, c := range ceds {
|
|
foto := &domain.Foto{}
|
|
cReq := &ced.QueryFotoByCedulaRequest{
|
|
Cedula: &ced.Cedula{
|
|
MunCed: c.MunCed,
|
|
SeqCed: c.SeqCed,
|
|
VerCed: c.VerCed,
|
|
},
|
|
}
|
|
r, err := a.cedulados.QueryFotoByCedula(ctx, cReq)
|
|
if err != nil {
|
|
fmt.Println("err on ced: ", c)
|
|
continue
|
|
}
|
|
// here should be a photo
|
|
foto.Imagen = r.Foto.Foto
|
|
foto.MunCed = c.MunCed
|
|
foto.SeqCed = c.SeqCed
|
|
foto.VerCed = c.VerCed
|
|
foto.ID = r.Foto.Id
|
|
fotos = append(fotos, foto)
|
|
}
|
|
return
|
|
}
|
|
|
|
func mapLocalDomain(info *ced.Cedulado)(ifo *domain.Info){
|
|
if info == nil {
|
|
fmt.Println("nil info ")
|
|
return nil
|
|
}
|
|
ifo = &domain.Info{
|
|
Cedula: domain.Cedula{
|
|
VerCed: info.Cedula.VerCed,
|
|
MunCed: info.Cedula.MunCed,
|
|
SeqCed: info.Cedula.SeqCed,
|
|
},
|
|
ID: info.Id,
|
|
Nombres: info.Nombres,
|
|
Apellido1: info.Apellido_1,
|
|
Apellido2: info.Apellido_2,
|
|
Sexo: info.Sexo,
|
|
Direccion: info.Direccion,
|
|
Telefono: info.Telefono,
|
|
}
|
|
return
|
|
}
|