// GET: Respuesta_Empleado/Create
        public ActionResult CreateFromQueja(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Queja queja = db.Quejas.Find(id);

            if (queja == null)
            {
                return(HttpNotFound());
            }
            RespuestaClienteQuejaViewModel viewmodel = new RespuestaClienteQuejaViewModel()
            {
                QuejaViewModel = new QuejaViewModel {
                    Queja = queja, Respuestas = new List <Respuesta>()
                },
                Respuesta_Cliente = new Respuesta_Cliente
                {
                    Queja_QuejaID             = queja.QRID,
                    Estado_QR_Estado_OrigenID = queja.Estado_QR_EstadoID
                }
            };

            AddListRespuestasQuejas(queja, viewmodel);
            Respuesta_Cliente respuesta_Cliente = viewmodel.Respuesta_Cliente;

            AddViewBagCreate(respuesta_Cliente);

            return(View(viewmodel));
        }
        public ActionResult CreateFromQueja(RespuestaClienteQuejaViewModel viewModel)
        {
            Respuesta_Cliente respuesta_Cliente = viewModel.Respuesta_Cliente;
            Queja             queja             = db.Quejas.Find(viewModel.QuejaViewModel.Queja.QRID);

            respuesta_Cliente.Queja_QuejaID = queja.QRID;

            if (ValoracionInvalida(respuesta_Cliente))
            {
                RestartRespuestaClienteQuejaViewModel(viewModel, respuesta_Cliente, queja);
                ModelState.AddModelError("", "Valoración inválida");
                return(View(viewModel));
            }
            if (EstadoInvalido(respuesta_Cliente))
            {
                RestartRespuestaClienteQuejaViewModel(viewModel, respuesta_Cliente, queja);
                ModelState.AddModelError("", "Estado inválido");
                return(View(viewModel));
            }

            if (ModelState.IsValid)
            {
                respuesta_Cliente.Fecha = DateTime.Now;

                queja.Estado_QR_EstadoID = respuesta_Cliente.Estado_QR_Estado_DestinoID;

                db.Respuesta_Clientes.Add(respuesta_Cliente);
                db.Entry(queja).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index", "Quejas"));
            }
            RestartRespuestaClienteQuejaViewModel(viewModel, respuesta_Cliente, queja);
            return(View(viewModel));
        }
        private void RestartRespuestaClienteQuejaViewModel(RespuestaClienteQuejaViewModel viewModel, Respuesta_Cliente respuesta_Cliente, Queja queja)
        {
            viewModel.QuejaViewModel.Queja = queja;

            AddListRespuestasQuejas(queja, viewModel);
            AddViewBagCreatePost(respuesta_Cliente);
        }
        private void AddListRespuestasQuejas(Queja queja, RespuestaClienteQuejaViewModel viewmodel)
        {
            int?id_queja = queja.QRID;
            List <Respuesta_Empleado> respuesta_Empleados = db.Respuesta_Empleados.Where(e => e.Queja_QuejaID == id_queja).ToList();
            List <Respuesta_Cliente>  respuesta_Clientes  = db.Respuesta_Clientes.Where(e => e.Queja_QuejaID == id_queja).ToList();

            if (viewmodel.QuejaViewModel.Respuestas == null)
            {
                viewmodel.QuejaViewModel.Respuestas = new List <Respuesta>();
            }
            viewmodel.QuejaViewModel.Respuestas.AddRange(respuesta_Clientes);
            viewmodel.QuejaViewModel.Respuestas.AddRange(respuesta_Empleados);
            viewmodel.QuejaViewModel.Respuestas.Sort(ModelHelpers.CompareRespuestas);
        }