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)); }
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)); }