def __init__(self):
     self.actividadServicios = ActividadServicios.ActividadServicios()
     self.documentoCrud = DocumentoCrud()
class DocumentoServicios:
    def __init__(self):
        self.actividadServicios = ActividadServicios.ActividadServicios()
        self.documentoCrud = DocumentoCrud()

    # region Servicios Basicos
    def get(self, id):
        return self.documentoCrud.readId(id)

    def getAll(self):
        return self.documentoCrud.readAll()

    def getDTO(self, documento):
        acciones = self.getAccionesForDocumento(documento.estadoDocumento)
        documentoDTO = DocumentoDTO(documento, acciones)
        return documentoDTO.toJSON()

    def insert(self, documento):
        return self.documentoCrud.create(documento)

    def update(self, documento):
        return self.documentoCrud.update(documento)

    def delete(self, documento):
        return self.documentoCrud.delete(documento)

    # endregion

    def getDocumentosByActividad(self, actividad):
        documentos = self.documentoCrud.whereList(actividad=actividad, isDisable=False)
        return documentos

    def listarByUsuario(self, persona):
        documents = []
        actividades = self.actividadServicios.getActividadesByPersona(persona)
        for actividad in actividades:
            documentos = self.getDocumentosByActividad(actividad)
            for documento in documentos:
                documents.append(documento)

        #datos = {'documentos': documents, 'formularios': formularios}
        return documents

    def cambiarEstadoDocumento(self, idDocumento, idEstadoDoc):
        documento = self.get(int(idDocumento))
        estado = EstadoDocumento.get(int(idEstadoDoc))
        if estado.getValor() == EstadoDocumento.PUBLICADO.getValor():
            documento.version = Util.versionDocumento(documento.version, False)
            documento.estadoDocumento = estado
        elif estado.getValor() == EstadoDocumento.REVISION.getValor():
            documento.estadoDocumento = estado
            documento.version = Util.versionDocumento(documento.version, True)
        else:
            documento.estadoDocumento = estado
        #TODO: Revisar la actualizaciĆ³nde los objetos
        self.documentoCrud.update(documento)

    def getAccionesForDocumento(self, estado_doc):
        acciones = []
        print estado_doc.getNombre()
        if (estado_doc.getValor() == EstadoDocumento.BORRADOR.getValor()):
            acciones.append(EstadoDocumento.REVISION.__dict__)
        elif (estado_doc.getValor() == EstadoDocumento.APROBADO.getValor()):
            acciones.append(EstadoDocumento.PUBLICADO.__dict__)
        elif (estado_doc.getValor() == EstadoDocumento.REVISION.getValor()):
            acciones.append(EstadoDocumento.VERIFICAR.__dict__)
            acciones.append(EstadoDocumento.APROBADO.__dict__)
        elif (estado_doc.getValor() == EstadoDocumento.VERIFICAR.getValor()):
            acciones.append(EstadoDocumento.APROBADO.__dict__)
            acciones.append(EstadoDocumento.BORRADOR.__dict__)
        elif (estado_doc.getValor() == EstadoDocumento.PUBLICADO.getValor()):
            acciones.append(EstadoDocumento.BORRADOR.__dict__)
        return acciones