コード例 #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));
        }
コード例 #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));
        }
コード例 #3
0
        public async Task <IHttpActionResult> CreaPQRSRecord(TipoPQRS TipoPQRS, int id)
        {
            var dataDist = new List <PQRSMotivoViewModel>();

            //Tipo Recrutamento
            if (TipoPQRS == TipoPQRS.Recruitment)
            {
                dataDist = await db.Recruitments.Where(r => r.RecruitmentId == id).
                           Select(RE => new PQRSMotivoViewModel()
                {
                    DataId = RE.RecruitmentId, MotivoPQRSId = 29, PQRSRecordId = RE.RecruitmentId
                }).
                           Distinct().ToListAsync();
            }

            try
            {
                if (dataDist.Count == 0)
                {
                    return(Ok(false));
                }
                //Consecutivo del flujo
                int idx = 1;

                //Recorre data
                foreach (var item in dataDist)
                {
                    var flujo = await db.FlujosPQRS.Include(f => f.MotivoPQRS).Where(f => f.MotivoPQRSId == item.MotivoPQRSId).ToListAsync();

                    idx = 1;
                    idx = await db.Database.SqlQuery <int>("select isnull(max(id),0) from PQRSRecord").FirstOrDefaultAsync() + 1;

                    int CommentId = 0;

                    foreach (var f in flujo)
                    {
                        //1.  Crea record
                        PQRSRecord nPQRS = new PQRSRecord();
                        nPQRS.Id    = idx;
                        nPQRS.Order = f.Order;
                        PQRSRecordComentario nPQRSComment = new PQRSRecordComentario();
                        if (f.Id == 1)
                        {
                            //nPQRS.EstadoStep = EstadoStep.Approved;
                            nPQRS.EstadoStep = EstadoStep.Done;
                            nPQRS.PasoActual = false;
                            //Crear Comment (primer paso Success)
                            nPQRSComment.PQRSRecordId    = nPQRS.Id;
                            nPQRSComment.PQRSRecordOrder = nPQRS.Order;
                            nPQRSComment.UsuarioId       = Seguridadcll.Usuario.UsuarioId;
                            nPQRSComment.FechaCreacion   = DateTime.Now;
                            nPQRSComment.Comentario      = f.Nombre + " Formato:" + f.MotivoPQRS.TipoPQRS.ToString() + " Motivo:" + f.MotivoPQRS.Nombre;
                            nPQRSComment.TipoComentario  = TipoComentario.Approval;
                            db.PQRSRecordComentarios.Add(nPQRSComment);
                            // await db.SaveChangesAsync();
                            AddLog("", nPQRS.Id, nPQRSComment);
                        }
                        else if (f.Id == 2)
                        {
                            nPQRS.EstadoStep = EstadoStep.In_Process;
                            nPQRS.PasoActual = true;
                        }
                        else
                        {
                            nPQRS.EstadoStep = EstadoStep.Pending;
                            nPQRS.PasoActual = false;
                        }

                        nPQRS.MotivoPQRSId             = f.MotivoPQRSId;
                        nPQRS.TipoPQRS                 = TipoPQRS;
                        nPQRS.MotivoPQRSNombre         = f.MotivoPQRS.Nombre;
                        nPQRS.FlujoPQRSNombre          = f.Nombre;
                        nPQRS.FlujoPQRSTipoPaso        = f.TipoPaso;
                        nPQRS.EnviaCorreoDestinatarios = f.EnviaCorreoDestinatarios;
                        nPQRS.FlujoPQRSDescripcion     = f.Descripcion;
                        db.PQRSRecords.Add(nPQRS);
                        await db.SaveChangesAsync();

                        if (nPQRSComment != null)
                        {
                            CommentId = nPQRSComment.Id;
                        }

                        AddLog("", nPQRS.Id, nPQRS);
                        //crea record usuarios
                        var flujoUsuarios = await db.UsuarioFlujoPQRS.Where(uf => uf.MotivoPQRSId == f.MotivoPQRSId && uf.FlujoPQRSId == f.Id).ToListAsync();

                        foreach (var uf in flujoUsuarios)
                        {
                            PQRSRecordUsuario nPQRSUser = new PQRSRecordUsuario();
                            if (uf.UsuarioId == Seguridadcll.Configuracion.UsuarioVendedorPQRS)
                            {
                                string usuarioVendedor = "";
                                usuarioVendedor = await db.Novedad.Include(d => d.Cliente).Where(d => d.Id == id).Select(d => d.Cliente.VendedorId).FirstOrDefaultAsync();

                                nPQRSUser.UsuarioId = usuarioVendedor;
                            }
                            else
                            {
                                nPQRSUser.UsuarioId = uf.UsuarioId;
                            }

                            nPQRSUser.PQRSRecordId    = nPQRS.Id;
                            nPQRSUser.PQRSRecordOrder = nPQRS.Order;

                            nPQRSUser.EstadoUsuarioFlujoPQRS = EstadoUsuarioFlujoPQRS.Unanswered;

                            db.PQRSRecordUsuarios.Add(nPQRSUser);
                            await db.SaveChangesAsync();

                            AddLog("", nPQRSUser.UsuarioId, nPQRSUser);
                        }

                        //Tareas
                        var Tareas = await db.FlujoPQRSTareas.Where(uf => uf.MotivoPQRSId == f.MotivoPQRSId && uf.FlujoPQRSId == f.Id).ToListAsync();

                        foreach (var t in Tareas)
                        {
                            PQRSRecordTareas nTarea = new PQRSRecordTareas();
                            //nTarea.Id = t.Id;
                            nTarea.PQRSRecordId    = nPQRS.Id;
                            nTarea.PQRSRecordOrder = nPQRS.Order;
                            nTarea.Descripcion     = t.Descripcion;
                            nTarea.Requerido       = t.Requerido;
                            nTarea.Terminado       = false;

                            db.PQRSRecordTareas.Add(nTarea);
                            await db.SaveChangesAsync();

                            AddLog("", nTarea.Id, nTarea);
                        }


                        //Condiciones
                        var Condiciones = await db.FlujoPQRSCondiciones.Where(uf => uf.MotivoPQRSId == f.MotivoPQRSId && uf.FlujoPQRSId == f.Id).ToListAsync();

                        foreach (var c in Condiciones)
                        {
                            PQRSRecordCondiciones nCondicion = new PQRSRecordCondiciones();
                            nCondicion.Id               = c.Id;
                            nCondicion.PQRSRecordId     = nPQRS.Id;
                            nCondicion.PQRSRecordOrder  = nPQRS.Order;
                            nCondicion.Descripcion      = c.Descripcion;
                            nCondicion.TipoCondicion    = c.TipoCondicion;
                            nCondicion.CondicionesValor = c.CondicionesValor;
                            nCondicion.Valor            = c.Valor;
                            nCondicion.SiNo             = c.SiNo;
                            nCondicion.RespValor        = 0;
                            nCondicion.RespSiNo         = false;

                            db.PQRSRecordCondiciones.Add(nCondicion);
                            await db.SaveChangesAsync();

                            AddLog("", nCondicion.Id, nCondicion);
                        }


                        //

                        if (f.Id == 4)
                        {
                            SendNotificationEmailTask(TipoNotificacion.NextStep, TipoComentario.Approval, TipoPQRS, nPQRS.Id, nPQRS.Order, dataDist.FirstOrDefault().DataId, nPQRSComment.Id, Seguridadcll.Usuario.UsuarioNombre, Seguridadcll.Aplicacion.Link);
                        }
                    }

                    if (TipoPQRS == TipoPQRS.Recruitment)
                    {
                        var itemsdev = await db.Recruitments.Where(di => di.RecruitmentId == item.DataId && 29 == item.MotivoPQRSId).ToListAsync();

                        foreach (var itemD in itemsdev)
                        {
                            itemD.PQRSRecordId    = idx;
                            db.Entry(itemD).State = EntityState.Modified;
                            await db.SaveChangesAsync();

                            AddLog("", itemD.RecruitmentId, itemD);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
            return(Ok(true));
        }