// GET api/values/5
        public IEnumerable <DonacionesViewModel> Get(int idUser)
        {
            List <DonacionesViewModel> listaDonaciones = new List <DonacionesViewModel>();

            List <DonacionesInsumos> lista1 = context.DonacionesInsumos
                                              .Where(d => d.IdUsuario == idUser).ToList();


            List <DonacionesMonetarias> lista2 = context.DonacionesMonetarias
                                                 .Where(d => d.IdUsuario == idUser).ToList();

            List <DonacionesHorasTrabajo> lista3 = context.DonacionesHorasTrabajo
                                                   .Where(d => d.IdUsuario == idUser).ToList();


            foreach (var insumo in lista1)
            {
                DonacionesViewModel dvm = new DonacionesViewModel();
                dvm.donacionesInsumos = insumo;
                dvm.tipo  = "insumo";
                dvm.total = context.DonacionesInsumos
                            .Where(p => p.IdPropuestaDonacionInsumo == insumo.IdPropuestaDonacionInsumo)
                            .Sum(p => p.Cantidad);
                listaDonaciones.Add(dvm);
            }

            foreach (var monetaria in lista2)
            {
                DonacionesViewModel dvm = new DonacionesViewModel();
                dvm.donacionesMonetarias = monetaria;
                dvm.tipo  = "monetario";
                dvm.total = Decimal.ToInt32(context.DonacionesMonetarias
                                            .Where(p => p.IdPropuestaDonacionMonetaria == monetaria.IdPropuestaDonacionMonetaria)
                                            .Sum(p => p.Dinero));
                listaDonaciones.Add(dvm);
            }

            foreach (var horastrabajo in lista3)
            {
                DonacionesViewModel dvm = new DonacionesViewModel();
                dvm.donacionesHorasTrabajo = horastrabajo;
                dvm.tipo  = "horastrabajo";
                dvm.total = context.DonacionesHorasTrabajo
                            .Where(p => p.IdPropuestaDonacionHorasTrabajo == horastrabajo.IdPropuestaDonacionHorasTrabajo)
                            .Sum(p => p.Cantidad);
                listaDonaciones.Add(dvm);
            }

            return(listaDonaciones);
        }
        public ActionResult Edit(DonacionesViewModel model)
        {
            if (ModelState.IsValid)
            {
                db.Entry(model.donacion).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            // Se recuperan los datos del colaborador
            vistaColaboradores colaborador = db.vistaColaboradores.SingleOrDefault(x => x.id == model.donacion.idColaborador);

            ViewBag.colaborador = colaborador.nombre + " " + colaborador.apellidos;
            // Se cargan los desplegables con datos
            ViewBag.idPeriodicidad = new SelectList(db.periodicidades, "id", "nombre", model.donacion.idPeriodicidad);
            return(View(model));
        }
        // GET: Donaciones/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            donaciones donacion = db.donaciones.Find(id);
            // Se recuperan los datos del colaborador
            vistaColaboradores colaborador = db.vistaColaboradores.SingleOrDefault(x => x.id == donacion.idColaborador);
            // Se crea el viewmodel a partir de los datos anteriores
            DonacionesViewModel modelo = new DonacionesViewModel(donacion, colaborador.CuentaBancaria, colaborador.CIF_NIF);

            if (donacion == null)
            {
                return(HttpNotFound());
            }
            return(View(modelo));
        }
        // GET: Donaciones/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            donaciones donacion = db.donaciones.Find(id);
            // Se recuperan los datos del colaborador
            vistaColaboradores colaborador = db.vistaColaboradores.SingleOrDefault(x => x.id == donacion.idColaborador);
            // Se crea el viewmodel a partir de los datos anteriores
            DonacionesViewModel modelo = new DonacionesViewModel(donacion, colaborador.CuentaBancaria, colaborador.CIF_NIF);

            if (donacion == null)
            {
                return(HttpNotFound());
            }
            // Se cargan los desplegables con datos
            ViewBag.colaborador    = colaborador.nombre + " " + colaborador.apellidos;
            ViewBag.idPeriodicidad = new SelectList(db.periodicidades, "id", "nombre", donacion.idPeriodicidad);
            return(View(modelo));
        }
        public ActionResult Create(DonacionesViewModel modelo)
        {
            //modelo.donacion.colaboradores = new colaboradores(db.persona.Where(x => x.id == modelo.donacion.idColaborador).First();
            if (ModelState.IsValid)
            {
                // Se crea la donación en la base de datos.
                db.donaciones.Add(modelo.donacion);
                db.SaveChanges();
                // Añadir al colaborador en la tabla de colaboradores.

                /*persona.colaboradores.Add(colaborador);
                 * persona.colaboradores.First().CIF_NIF = modelo.NIF;
                 * persona.colaboradores.First().CuentaBancaria = modelo.cuentaBancaria;
                 * db.Entry(persona).State = EntityState.Modified;
                 *
                 * db.SaveChanges();*/
                using (var context = new GestorONGDContext())
                {
                    var persona     = context.persona.Find(modelo.donacion.idColaborador);
                    var colaborador = new colaboradores(persona, modelo.NIF, modelo.cuentaBancaria);

                    personas_perfiles per_perfiles = new personas_perfiles()
                    {
                        idPersona = modelo.donacion.idColaborador,
                        idPerfil  = 2
                                    //personas = colaborador
                    };

                    /*persona.colaboradores = new HashSet<colaboradores>();
                     * persona.colaboradores.Add(colaborador);*/
                    /*var colaborador = new colaboradores()
                     * {
                     *  CIF_NIF = modelo.NIF,
                     *  CuentaBancaria = modelo.cuentaBancaria
                     * };*/
                    context.colaboradores.Add(colaborador);
                    context.SaveChanges();
                    colaborador.idColaborador        = modelo.donacion.idColaborador;
                    context.Entry(colaborador).State = EntityState.Modified;
                    context.persona.Remove(persona);
                    context.persona_perfil.Add(per_perfiles);
                    context.SaveChanges();
                }
                //db.Entry(persona).State = EntityState.Detached;

                /*var existingcolaborador = db.colaboradores.Where(x => x.id == modelo.donacion.idColaborador).FirstOrDefault();
                 * existingcolaborador.idColaborador = modelo.donacion.idColaborador;
                 * existingcolaborador.CIF_NIF = modelo.NIF;
                 * existingcolaborador.CuentaBancaria = modelo.cuentaBancaria;
                 * db.Entry(existingcolaborador).State = EntityState.Modified;
                 *
                 * // Añadir la relación entre personas y perfiles en la tabla personas_perfiles
                 * var personas_perfiles = new personas_perfiles(0, modelo.donacion.idColaborador, 2);
                 * db.persona_perfil.Add(personas_perfiles);
                 * db.SaveChanges();*/
                //TempData["Acierto"] = "La donación creada por el colaborador " + persona.nombre + " " + persona.apellidos + " con un valor de " + modelo.donacion.cantidad + "€ ha sido realizada correctamente";



                return(RedirectToAction("Index"));
            }
            else
            {
                var errors = ModelState.SelectMany(x => x.Value.Errors.Select(z => z.Exception));
                Console.Write(errors.ToString());
            }

            // Se listan las personas que no son colaboradores existentes en el sistema puesto que sólo se puede hacer una única donación por usuario.
            var colaboradores = getColaboradoresSelectList();

            ViewBag.idColaborador  = colaboradores;
            ViewBag.idPeriodicidad = new SelectList(db.periodicidades, "id", "nombre", modelo.donacion.idPeriodicidad);
            return(View(modelo));
        }
Exemple #6
0
        public List <DonacionesViewModel> BuscarDonaciones(int idUser)
        {
            List <DonacionesViewModel> listaDonaciones = new List <DonacionesViewModel>();

            List <DonacionesInsumos> lista1 = context.DonacionesInsumos.Include("PropuestasDonacionesInsumos")
                                              .Where(d => d.IdUsuario == idUser).ToList();


            List <DonacionesMonetarias> lista2 = context.DonacionesMonetarias.Include("PropuestasDonacionesMonetarias")
                                                 .Where(d => d.IdUsuario == idUser).OrderByDescending(c => c.FechaCreacion).ToList();

            List <DonacionesHorasTrabajo> lista3 = context.DonacionesHorasTrabajo.Include("PropuestasDonacionesHorasTrabajo")
                                                   .Where(d => d.IdUsuario == idUser).ToList();


            foreach (var insumo in lista1)
            {
                DonacionesViewModel dvm = new DonacionesViewModel();
                dvm.donacionesInsumos = insumo;
                dvm.tipo  = "insumo";
                dvm.total = context.DonacionesInsumos
                            .Where(p => p.IdPropuestaDonacionInsumo == insumo.IdPropuestaDonacionInsumo)
                            .Sum(p => p.Cantidad);
                DonacionesInsumosViewModel divm = new DonacionesInsumosViewModel();
                divm.Cantidad = insumo.Cantidad;
                divm.Estado   = insumo.PropuestasDonacionesInsumos.Propuestas.Estado;
                divm.Nombre   = insumo.PropuestasDonacionesInsumos.Propuestas.Nombre;
                divm.IdPropuestaDonacionInsumo = insumo.PropuestasDonacionesInsumos.Propuestas.IdPropuesta;
                divm.NombreDonado       = insumo.PropuestasDonacionesInsumos.Nombre;
                dvm.DonacionesInsumosVM = divm;
                listaDonaciones.Add(dvm);
            }

            foreach (var monetaria in lista2)
            {
                DonacionesViewModel dvm = new DonacionesViewModel();
                dvm.donacionesMonetarias = monetaria;
                dvm.tipo  = "monetario";
                dvm.total = Decimal.ToInt32(context.DonacionesMonetarias
                                            .Where(p => p.IdPropuestaDonacionMonetaria == monetaria.IdPropuestaDonacionMonetaria)
                                            .Sum(p => p.Dinero));
                DonacionesMonetariasViewModel dmvm = new DonacionesMonetariasViewModel();
                dmvm.Dinero = monetaria.Dinero;
                dmvm.Estado = monetaria.PropuestasDonacionesMonetarias.Propuestas.Estado;
                dmvm.Nombre = monetaria.PropuestasDonacionesMonetarias.Propuestas.Nombre;
                dmvm.IdPropuestaDonacionMonetaria = monetaria.PropuestasDonacionesMonetarias.Propuestas.IdPropuesta;
                dmvm.Fecha = monetaria.FechaCreacion;
                dvm.DonacionesMonetariasVM = dmvm;
                listaDonaciones.Add(dvm);
            }

            foreach (var horastrabajo in lista3)
            {
                DonacionesViewModel dvm = new DonacionesViewModel();
                dvm.donacionesHorasTrabajo = horastrabajo;
                dvm.tipo  = "horastrabajo";
                dvm.total = context.DonacionesHorasTrabajo
                            .Where(p => p.IdPropuestaDonacionHorasTrabajo == horastrabajo.IdPropuestaDonacionHorasTrabajo)
                            .Sum(p => p.Cantidad);
                DonacionesHorasTrabajoViewModel dtvm = new DonacionesHorasTrabajoViewModel();
                dtvm.Cantidad = horastrabajo.Cantidad;
                dtvm.Estado   = horastrabajo.PropuestasDonacionesHorasTrabajo.Propuestas.Estado;
                dtvm.Nombre   = horastrabajo.PropuestasDonacionesHorasTrabajo.Propuestas.Nombre;
                dtvm.IdPropuestaDonacionHorasTrabajo = horastrabajo.PropuestasDonacionesHorasTrabajo.Propuestas.IdPropuesta;
                dvm.DonacionesHorasTrabajoVM         = dtvm;
                listaDonaciones.Add(dvm);
            }

            return(listaDonaciones);
        }