up
This commit is contained in:
@@ -148,6 +148,21 @@ func CreateProyecto(p *Proyecto) error {
|
|||||||
return app.Http.Database.DB.Create(p).Error
|
return app.Http.Database.DB.Create(p).Error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CalcularProgresoDesdeFases(proyectoID uint) int {
|
||||||
|
var total, completados int64
|
||||||
|
app.Http.Database.DB.Model(&ProyectoFase{}).Where("proyecto_id = ?", proyectoID).Count(&total)
|
||||||
|
if total == 0 {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
app.Http.Database.DB.Model(&ProyectoFase{}).Where("proyecto_id = ? AND estado = ?", proyectoID, "completado").Count(&completados)
|
||||||
|
return int((completados * 100) / total)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ActualizarProgresoProyecto(proyectoID uint) error {
|
||||||
|
nuevo := CalcularProgresoDesdeFases(proyectoID)
|
||||||
|
return app.Http.Database.DB.Model(&Proyecto{}).Where("id = ?", proyectoID).Update("progreso", nuevo).Error
|
||||||
|
}
|
||||||
|
|
||||||
func UpdateProyecto(p *Proyecto) error {
|
func UpdateProyecto(p *Proyecto) error {
|
||||||
return app.Http.Database.DB.Model(&Proyecto{}).Where("id = ?", p.ID).Updates(map[string]interface{}{
|
return app.Http.Database.DB.Model(&Proyecto{}).Where("id = ?", p.ID).Updates(map[string]interface{}{
|
||||||
"nombre": p.Nombre,
|
"nombre": p.Nombre,
|
||||||
|
|||||||
@@ -150,6 +150,9 @@ func PortalDashboard(c *fiber.Ctx) error {
|
|||||||
|
|
||||||
clienteIDs := models.GetClienteIDsForPortalUser(fullUser)
|
clienteIDs := models.GetClienteIDsForPortalUser(fullUser)
|
||||||
proyectos, _ := models.GetProyectosByClienteIDs(clienteIDs)
|
proyectos, _ := models.GetProyectosByClienteIDs(clienteIDs)
|
||||||
|
for i := range proyectos {
|
||||||
|
_ = models.ActualizarProgresoProyecto(proyectos[i].ID)
|
||||||
|
}
|
||||||
|
|
||||||
// Si partner: agrupar proyectos por cliente
|
// Si partner: agrupar proyectos por cliente
|
||||||
type ClienteProyectos struct {
|
type ClienteProyectos struct {
|
||||||
@@ -208,6 +211,7 @@ func PortalProyecto(c *fiber.Ctx) error {
|
|||||||
avances, _ := models.GetAvancesByProyecto(proy.ID, true)
|
avances, _ := models.GetAvancesByProyecto(proy.ID, true)
|
||||||
entregables, _ := models.GetEntregablesByProyecto(proy.ID, true)
|
entregables, _ := models.GetEntregablesByProyecto(proy.ID, true)
|
||||||
tickets, _ := models.GetTicketsByPortalUser(u.ID)
|
tickets, _ := models.GetTicketsByPortalUser(u.ID)
|
||||||
|
_ = models.ActualizarProgresoProyecto(proy.ID)
|
||||||
|
|
||||||
return c.Render("portal/proyecto", fiber.Map{
|
return c.Render("portal/proyecto", fiber.Map{
|
||||||
"portalUser": fullUser,
|
"portalUser": fullUser,
|
||||||
@@ -230,6 +234,9 @@ func PortalGetProyectos(c *fiber.Ctx) error {
|
|||||||
fullUser, _ := models.GetPortalUserByID(u.ID)
|
fullUser, _ := models.GetPortalUserByID(u.ID)
|
||||||
clienteIDs := models.GetClienteIDsForPortalUser(fullUser)
|
clienteIDs := models.GetClienteIDsForPortalUser(fullUser)
|
||||||
proyectos, _ := models.GetProyectosByClienteIDs(clienteIDs)
|
proyectos, _ := models.GetProyectosByClienteIDs(clienteIDs)
|
||||||
|
for i := range proyectos {
|
||||||
|
_ = models.ActualizarProgresoProyecto(proyectos[i].ID)
|
||||||
|
}
|
||||||
return c.JSON(proyectos)
|
return c.JSON(proyectos)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -265,6 +272,7 @@ func PortalGetProyectoData(c *fiber.Ctx) error {
|
|||||||
facturas, _ := models.GetFacturasByCliente(proy.ClienteID, true)
|
facturas, _ := models.GetFacturasByCliente(proy.ClienteID, true)
|
||||||
facturasNoLeidas := models.CountUnreadFacturaNotifs(u.ID)
|
facturasNoLeidas := models.CountUnreadFacturaNotifs(u.ID)
|
||||||
documentos, _ := models.GetDocumentosByProyecto(proy.ID)
|
documentos, _ := models.GetDocumentosByProyecto(proy.ID)
|
||||||
|
_ = models.ActualizarProgresoProyecto(proy.ID)
|
||||||
|
|
||||||
return c.JSON(fiber.Map{
|
return c.JSON(fiber.Map{
|
||||||
"proyecto": proy,
|
"proyecto": proy,
|
||||||
|
|||||||
@@ -195,11 +195,13 @@ func CreateFase(c *fiber.Ctx) error {
|
|||||||
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
|
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
|
||||||
}
|
}
|
||||||
f.ParseEntregables()
|
f.ParseEntregables()
|
||||||
|
_ = models.ActualizarProgresoProyecto(uint(proyID))
|
||||||
return c.Status(201).JSON(f)
|
return c.Status(201).JSON(f)
|
||||||
}
|
}
|
||||||
|
|
||||||
func UpdateFase(c *fiber.Ctx) error {
|
func UpdateFase(c *fiber.Ctx) error {
|
||||||
faseID, _ := strconv.ParseUint(c.Params("faseID"), 10, 32)
|
faseID, _ := strconv.ParseUint(c.Params("faseID"), 10, 32)
|
||||||
|
proyID, _ := strconv.ParseUint(c.Params("id"), 10, 32)
|
||||||
type Req struct {
|
type Req struct {
|
||||||
Nombre string `json:"nombre"`
|
Nombre string `json:"nombre"`
|
||||||
Descripcion string `json:"descripcion"`
|
Descripcion string `json:"descripcion"`
|
||||||
@@ -241,14 +243,17 @@ func UpdateFase(c *fiber.Ctx) error {
|
|||||||
if err := models.UpdateProyectoFase(f); err != nil {
|
if err := models.UpdateProyectoFase(f); err != nil {
|
||||||
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
|
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
|
||||||
}
|
}
|
||||||
|
_ = models.ActualizarProgresoProyecto(uint(proyID))
|
||||||
return c.JSON(fiber.Map{"ok": true})
|
return c.JSON(fiber.Map{"ok": true})
|
||||||
}
|
}
|
||||||
|
|
||||||
func DeleteFase(c *fiber.Ctx) error {
|
func DeleteFase(c *fiber.Ctx) error {
|
||||||
faseID, _ := strconv.ParseUint(c.Params("faseID"), 10, 32)
|
faseID, _ := strconv.ParseUint(c.Params("faseID"), 10, 32)
|
||||||
|
proyID, _ := strconv.ParseUint(c.Params("id"), 10, 32)
|
||||||
if err := models.DeleteProyectoFase(uint(faseID)); err != nil {
|
if err := models.DeleteProyectoFase(uint(faseID)); err != nil {
|
||||||
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
|
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
|
||||||
}
|
}
|
||||||
|
_ = models.ActualizarProgresoProyecto(uint(proyID))
|
||||||
return c.JSON(fiber.Map{"ok": true})
|
return c.JSON(fiber.Map{"ok": true})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -257,6 +262,7 @@ func ApplyTemplate(c *fiber.Ctx) error {
|
|||||||
if err := models.ApplyFaseTemplate(uint(id)); err != nil {
|
if err := models.ApplyFaseTemplate(uint(id)); err != nil {
|
||||||
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
|
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
|
||||||
}
|
}
|
||||||
|
_ = models.ActualizarProgresoProyecto(uint(id))
|
||||||
fases, _ := models.GetFasesByProyecto(uint(id))
|
fases, _ := models.GetFasesByProyecto(uint(id))
|
||||||
return c.JSON(fases)
|
return c.JSON(fases)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user