private void RestartRespuestaClienteReclamacionViewModel(RespuestaClienteReclamacionViewModel viewModel, Respuesta_Cliente respuesta_Cliente, Reclamacion reclamacion)
        {
            viewModel.ReclamacionViewModel.Reclamacion = reclamacion;

            AddListRespuestasReclamaciones(reclamacion, viewModel);
            AddViewBagCreatePost(respuesta_Cliente);
        }
        // GET: Respuesta_Empleado/Create
        public ActionResult CreateFromReclamacion(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Reclamacion reclamacion = db.Reclamacions.Find(id);

            if (reclamacion == null)
            {
                return(HttpNotFound());
            }
            RespuestaClienteReclamacionViewModel viewmodel = new RespuestaClienteReclamacionViewModel()
            {
                ReclamacionViewModel = new ReclamacionViewModel {
                    Reclamacion = reclamacion, Respuestas = new List <Respuesta>()
                },
                Respuesta_Cliente = new Respuesta_Cliente
                {
                    Reclamacion_ReclamacionID = reclamacion.QRID,
                    Estado_QR_Estado_OrigenID = reclamacion.Estado_QR_EstadoID
                }
            };

            AddListRespuestasReclamaciones(reclamacion, viewmodel);
            Respuesta_Cliente respuesta_Cliente = viewmodel.Respuesta_Cliente;


            AddViewBagCreate(respuesta_Cliente);

            return(View(viewmodel));
        }
        private void AddListRespuestasReclamaciones(Reclamacion reclamacion, RespuestaClienteReclamacionViewModel viewmodel)
        {
            int?id_reclamacion = reclamacion.QRID;
            List <Respuesta_Empleado> respuesta_Empleados = db.Respuesta_Empleados.Where(e => e.Reclamacion_ReclamacionID == id_reclamacion).ToList();
            List <Respuesta_Cliente>  respuesta_Clientes  = db.Respuesta_Clientes.Where(e => e.Reclamacion_ReclamacionID == id_reclamacion).ToList();

            if (viewmodel.ReclamacionViewModel.Respuestas == null)
            {
                viewmodel.ReclamacionViewModel.Respuestas = new List <Respuesta>();
            }
            viewmodel.ReclamacionViewModel.Respuestas.AddRange(respuesta_Clientes);
            viewmodel.ReclamacionViewModel.Respuestas.AddRange(respuesta_Empleados);
            viewmodel.ReclamacionViewModel.Respuestas.Sort(ModelHelpers.CompareRespuestas);
        }
        public ActionResult CreateFromReclamacion(RespuestaClienteReclamacionViewModel viewModel)
        {
            Respuesta_Cliente respuesta_Cliente = viewModel.Respuesta_Cliente;
            Reclamacion       reclamacion       = db.Reclamacions.Find(viewModel.ReclamacionViewModel.Reclamacion.QRID);

            respuesta_Cliente.Reclamacion_ReclamacionID = reclamacion.QRID;

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



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

                reclamacion.Estado_QR_EstadoID = respuesta_Cliente.Estado_QR_Estado_DestinoID;

                db.Respuesta_Clientes.Add(respuesta_Cliente);
                db.Entry(reclamacion).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index", "Reclamacions"));
            }

            RestartRespuestaClienteReclamacionViewModel(viewModel, respuesta_Cliente, reclamacion);
            return(View(viewModel));
        }