Beispiel #1
0
        public async Task <JsonResult> AddComment(AddCommentViewModel model)
        {
            if (ModelState.IsValid)
            {
                // Crear Comment (primer paso Success)
                PQRSRecordComentario nPQRSComment = new PQRSRecordComentario();
                nPQRSComment.PQRSRecordId    = model.PQRSRecordId;
                nPQRSComment.PQRSRecordOrder = model.PQRSRecordOrder;;
                nPQRSComment.UsuarioId       = Seguridadcll.Usuario.UsuarioId;
                nPQRSComment.FechaCreacion   = DateTime.Now;
                nPQRSComment.Comentario      = model.Comment;
                nPQRSComment.TipoComentario  = TipoComentario.Comment;
                db.PQRSRecordComentarios.Add(nPQRSComment);
                await db.SaveChangesAsync();

                AddLog("PQRS/AddComment", nPQRSComment.Id, nPQRSComment);
                if (model.PQRSRecordDocumentos != null)
                {
                    await SaveDocuments(nPQRSComment.Id, model.PQRSRecordDocumentos);
                }
                if (model.Files != null)
                {
                    await UploadFiles(nPQRSComment.Id, model.Files);
                }

                API.PQRSController ApiPQRS = new API.PQRSController();
                ApiPQRS.SendNotificationEmailTask(API.PQRSController.TipoNotificacion.Comment, model.TipoComentario, model.TipoPQRS, model.PQRSRecordId, model.PQRSRecordOrder, model.DataId, nPQRSComment.Id, Seguridadcll.Usuario.UsuarioNombre, Seguridadcll.Aplicacion.Link);
                //await Task.Run(() => ApiPQRS.SendNotificationEmailTask(API.PQRSController.TipoNotificacion.Comment, model.TipoComentario, model.TipoPQRS, model.PQRSRecordId, model.PQRSRecordOrder, model.DataId, nPQRSComment.Id));
            }


            return(Json(true, JsonRequestBehavior.AllowGet));
        }
Beispiel #2
0
        public async Task <JsonResult> AddAnswer(AddCommentViewModel model)
        {
            var result = new AjaxResult();

            if (ModelState.IsValid)
            {
                #region ValidaCheckList
                //var tareas = await db.PQRSRecordTareas.Where(pt => pt.PQRSRecordId == model.PQRSRecordId && pt.PQRSRecordOrder == model.PQRSRecordOrder).ToListAsync();

                if (model.TipoComentario == TipoComentario.Approval)
                {
                    if (model.Tareas == null)
                    {
                        model.Tareas = new List <PQRSRecordTareas>();
                    }

                    bool   flagTareas = true;
                    string msgTareas  = "";
                    foreach (var t in model.Tareas)
                    {
                        if (t.Requerido && !t.Terminado)
                        {
                            flagTareas = false;
                            msgTareas += $" Task: '{t.Descripcion}' is required to advance" + System.Environment.NewLine;
                        }
                    }

                    if (!flagTareas)
                    {
                        return(Json(result.False(msgTareas), JsonRequestBehavior.AllowGet));
                    }
                }
                #endregion

                // Crear Comment (primer paso Success)
                PQRSRecordComentario nPQRSComment = new PQRSRecordComentario();
                nPQRSComment.PQRSRecordId    = model.PQRSRecordId;
                nPQRSComment.PQRSRecordOrder = model.PQRSRecordOrder;
                nPQRSComment.UsuarioId       = Seguridadcll.Usuario.UsuarioId;
                nPQRSComment.FechaCreacion   = DateTime.Now;
                nPQRSComment.Comentario      = model.Comment;
                nPQRSComment.TipoComentario  = model.TipoComentario;
                db.PQRSRecordComentarios.Add(nPQRSComment);
                await db.SaveChangesAsync();

                AddLog("PQRS/AddAnswer", nPQRSComment.Id, nPQRSComment);
                if (model.PQRSRecordDocumentos != null)
                {
                    await SaveDocuments(nPQRSComment.Id, model.PQRSRecordDocumentos);
                }
                if (model.Files != null)
                {
                    await UploadFiles(nPQRSComment.Id, model.Files);
                }

                if (model.Tareas != null)
                {
                    await SaveCheckList(model.Tareas);
                }
                if (model.Condiciones != null)
                {
                    foreach (var c in model.Condiciones)
                    {
                        await SaveConditions(c.Condiciones);
                    }
                }


                //Users in step
                var usuarioStep = await db.PQRSRecordUsuarios
                                  .Where(pu => pu.PQRSRecordId == model.PQRSRecordId && pu.PQRSRecordOrder == model.PQRSRecordOrder && pu.UsuarioId == Seguridadcll.Usuario.UsuarioId)
                                  .FirstOrDefaultAsync();

                if (usuarioStep != null)
                {
                    if (model.TipoComentario == TipoComentario.Approval)
                    {
                        //usuarioStep.EstadoUsuarioFlujoPQRS = EstadoUsuarioFlujoPQRS.Approved;
                        usuarioStep.EstadoUsuarioFlujoPQRS = EstadoUsuarioFlujoPQRS.Done;
                    }
                    else if (model.TipoComentario == TipoComentario.Rejection)
                    {
                        //usuarioStep.EstadoUsuarioFlujoPQRS = EstadoUsuarioFlujoPQRS.Rejected;
                        usuarioStep.EstadoUsuarioFlujoPQRS = EstadoUsuarioFlujoPQRS.Returned;
                    }
                    else if (model.TipoComentario == TipoComentario.Close)
                    {
                        usuarioStep.EstadoUsuarioFlujoPQRS = EstadoUsuarioFlujoPQRS.Closed;
                    }
                    db.Entry(usuarioStep).State = EntityState.Modified;
                    await db.SaveChangesAsync();
                }

                API.PQRSController ApiPQRS = new API.PQRSController();
                if (model.TipoComentario == TipoComentario.Close)
                {
                    await ApiPQRS.CloseFlow(model.TipoComentario, model.PQRSRecordId, model.PQRSRecordOrder);

                    //Notificación Close Flow
                    ApiPQRS.SendNotificationEmailTask(API.PQRSController.TipoNotificacion.Close, model.TipoComentario, model.TipoPQRS, model.PQRSRecordId, model.PQRSRecordOrder, model.DataId, nPQRSComment.Id, Seguridadcll.Usuario.UsuarioNombre, Seguridadcll.Aplicacion.Link);
                }
                else
                {
                    await ApiPQRS.ChangeStep(model.TipoComentario, model.PQRSRecordId, model.PQRSRecordOrder, model.DataId, model.TipoPQRS);

                    //Notificación Current Step
                    ApiPQRS.SendNotificationEmailTask(API.PQRSController.TipoNotificacion.CurrentStep, model.TipoComentario, model.TipoPQRS, model.PQRSRecordId, model.PQRSRecordOrder, model.DataId, nPQRSComment.Id, Seguridadcll.Usuario.UsuarioNombre, Seguridadcll.Aplicacion.Link);
                }

                await ApiPQRS.CompleteFormat(model.TipoPQRS, model.DataId);
            }
            else
            {
                return(Json(result.False("All fields are required."), JsonRequestBehavior.AllowGet));
            }


            return(Json(result.True(), JsonRequestBehavior.AllowGet));
        }