示例#1
0
        public ActionResult Modificar_Baja(int id, string razon_baja, DateTime fecha_baja, int motivo_baja)
        {
            Contratacion contrato = db.Contratacion.SingleOrDefault(c => c.id_contratacion == id);

            if (contrato == null)
            {
                return(HttpNotFound());
            }
            try
            {
                contrato.fecha_fin               = fecha_baja;
                contrato.id_motivo_baja          = motivo_baja;
                contrato.razon_baja              = razon_baja;
                contrato.fecha_modificacion      = DateTime.Now;
                contrato.id_usuario_modificacion = Cache.DiccionarioUsuariosLogueados[User.Identity.Name].usuario.id_usuario;
                db.Entry(contrato).State         = EntityState.Modified;
                db.SaveChanges();
            }
            catch
            {
                ContextMessage msg = new ContextMessage(ContextMessage.Error, "No se pudo modificar el contrato seleccionado.");
                msg.ReturnUrl = Url.Action("Historico", new { id_empleado = contrato.id_empleado });
                TempData[User.Identity.Name] = msg;
                return(RedirectToAction("Mensaje"));
            }
            return(RedirectToAction("Historico", new { id_empleado = contrato.id_empleado }));
        }
示例#2
0
        public ActionResult NuevoCodigo()
        {
            ViewBag.empresa = new SelectList(db.Empresa.Where(e => !e.eliminado), "id_empresa", "nombre");
            Contratacion contrato = new Contratacion();

            return(View(contrato));
        }
示例#3
0
        public int CrearContratacion(Contratacion Contratacion)
        {
            int idGenerado = 0;

            if (Contratacion.IdUsuarioAlta == 0)
            {
                Contratacion.IdUsuarioAlta = 1;
            }

            string connectionString = ConfigurationManager.AppSettings["ConnectionString"].ToString();
            Engine engine           = new Engine(connectionString);

            StringBuilder comando = new StringBuilder();

            comando.Append("insert into Contrataciones ");
            comando.Append(" (titulo,  descripcion, locacion, maximohijos, preciototal, fechaContratacion, idusuarioalta, fechaAlta) ");
            comando.Append(" values ");
            comando.Append(" ('" + Contratacion.Titulo + "','" + Contratacion.Descripcion + "', '" + Contratacion.Locacion + "', " + Contratacion.MaximoHijos + ", '" + Contratacion.PrecioTotal + "', '" + Contratacion.FechaContratacion.ToString("yyyy-MM-dd HH:mm:ss") + "', " + Contratacion.IdUsuarioAlta + ", NOW()) ");

            int resultado = engine.Execute(comando.ToString());

            if (resultado > 0)
            {
                idGenerado = CommonService.GetLastIdFromTable("Contrataciones");
            }

            return(idGenerado);
        }
示例#4
0
        public ActionResult Terminar_Contrato(int id, DateTime fecha_contrato, int motivo_baja, string razon_baja)
        {
            Contratacion contratacion = db.Contratacion.SingleOrDefault(c => c.id_contratacion == id && c.activo);

            if (contratacion == null)
            {
                return(HttpNotFound());
            }
            using (DbContextTransaction tran = db.Database.BeginTransaction())
            {
                try
                {
                    contratacion.Salario.fecha_modificacion = DateTime.Now;
                    contratacion.fecha_fin               = fecha_contrato;
                    contratacion.fecha_modificacion      = DateTime.Now;
                    contratacion.id_motivo_baja          = motivo_baja;
                    contratacion.razon_baja              = razon_baja;
                    contratacion.id_estado_empleado      = (int)Catalogos.Estado_Empleado.Baja;
                    contratacion.id_usuario_modificacion = contratacion.Salario.id_usuario_modificacion = Cache.DiccionarioUsuariosLogueados[User.Identity.Name].usuario.id_usuario;
                    contratacion.activo                  = false;
                    contratacion.Salario.activo          = false;
                    db.Entry(contratacion.Salario).State = EntityState.Modified;
                    db.Entry(contratacion).State         = EntityState.Modified;
                    db.SaveChanges();
                    tran.Commit();
                    return(RedirectToAction("Details", "Empleado", new { id = contratacion.id_empleado, error = "" }));
                }
                catch
                {
                    tran.Rollback();
                    return(View("Details", "Empleado", new { id = contratacion.id_empleado, error = "Error. No se guardaron los cambios efectuados." }));
                }
            }
        }
示例#5
0
 public void LiberarDisponibilidad(Contratacion contratacion)
 {
     foreach (FechaContratacion fecha in contratacion.FechaContratacion)
     {
         fecha.Reservada = false;
     }
 }
        public ActionResult PagarContratacion(int contratacionId)
        {
            if (Session["UserId"] == null)
            {
                return(RedirectToAction("Login", "Account"));
            }

            if (Session["isAdmin"] != null)
            {
                return(View("NotAuthorized"));
            }

            int usuarioId = Int32.Parse(Session["UserId"].ToString());

            using (var db = new SQLServerContext())
            {
                Contratacion contratacion = db.Contrataciones
                                            .Include("Publicacion")
                                            .Include("FechaContratacion")
                                            .FirstOrDefault(c => c.Id == contratacionId);

                Usuario usuario = db.Usuarios.Find(usuarioId);

                MP mp = new MP();

                String url = mp.PagarContratacion(usuario, contratacion);

                return(Redirect(url));
            }
        }
示例#7
0
        public ActionResult ActivarContrato(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Contratacion contrato = db.Contratacion.SingleOrDefault(c => c.id_contratacion == id);

            if (contrato == null)
            {
                return(HttpNotFound());
            }
            var contratos = db.Contratacion.Where(c => c.activo && c.id_empleado == contrato.id_empleado);

            if (contratos.Count() > 0)
            {
                ContextMessage msg = new ContextMessage(ContextMessage.Error, "El empleado ya tiene un contrato activo.");
                msg.ReturnUrl = Url.Action("Details", "Empleado", new { id = contrato.id_empleado });
                TempData[User.Identity.Name] = msg;
                return(RedirectToAction("Mensaje"));
            }
            contrato.fecha_fin               = null;
            contrato.activo                  = true;
            contrato.eliminado               = false;
            contrato.id_estado_empleado      = 1;
            contrato.id_motivo_baja          = null;
            contrato.razon_baja              = "";
            contrato.fecha_modificacion      = DateTime.Now;
            contrato.id_usuario_modificacion = Cache.DiccionarioUsuariosLogueados[User.Identity.Name].usuario.id_usuario;
            db.Entry(contrato).State         = EntityState.Modified;
            db.SaveChanges();

            return(RedirectToAction("Details", "Empleado", new { id = contrato.id_empleado }));
        }
        internal void calificarUsuario(int idContratacion, int idTipoEvaluacion, int idTipoCalificacion, string comentario)
        {
            Contratacion     contratacion     = cor.traerDatosPorId(idContratacion);
            TipoEvaluacion   tipoEvaluacion   = tir.traerDatosPorId(idTipoEvaluacion);
            TipoCalificacion tipoCalificacion = tcr.traerDatosPorId(idTipoCalificacion);

            cr.calificarUsuario(comentario, contratacion, tipoEvaluacion, tipoCalificacion, idTipoCalificacion);
        }
示例#9
0
        public ActionResult Editar(Contratacion contrato)
        {
            ModelState.Clear();
            Contratacion editContrato = db.Contratacion.SingleOrDefault(c => c.activo && !c.eliminado && c.id_contratacion == contrato.id_contratacion);

            if (editContrato == null)
            {
                return(RedirectToAction("Details", "Empleado", new { id = editContrato.id_empleado, error = "El contrato no se encuentra activo." }));
            }
            if (ModelState.IsValid)
            {
                using (DbContextTransaction tran = db.Database.BeginTransaction())
                {
                    try
                    {
                        if (editContrato.id_estado_empleado != contrato.id_estado_empleado)
                        {
                            if (contrato.id_estado_empleado == (int)Catalogos.Estado_Empleado.Baja)
                            {
                                contrato.fecha_fin = DateTime.Now;
                            }
                            else
                            {
                                contrato.fecha_fin      = null;
                                contrato.id_motivo_baja = null;
                                contrato.razon_baja     = "";
                            }
                        }
                        editContrato.fecha_inicio            = contrato.fecha_inicio;
                        editContrato.referido_por            = contrato.referido_por;
                        editContrato.fecha_modificacion      = DateTime.Now;
                        editContrato.id_usuario_modificacion = Cache.DiccionarioUsuariosLogueados[User.Identity.Name].usuario.id_usuario;
                        db.Entry(editContrato).State         = EntityState.Modified;
                        db.SaveChanges();
                        tran.Commit();
                        return(RedirectToAction("Details", "Empleado", new { id = editContrato.id_empleado, error = "" }));
                    }
                    catch
                    {
                        tran.Rollback();
                        ModelState.AddModelError("", "Error durante la operación. Datos no guardados.");
                    }
                }
            }
            ViewBag.fecha_inicio_contrato = editContrato.fecha_inicio.ToString("dd/MM/yyyy");
            ViewBag.empresa         = new SelectList(db.Empresa.Where(e => !e.eliminado).OrderBy(e => e.nombre), "id_empresa", "nombre", editContrato.id_empresa);
            ViewBag.puesto          = new SelectList(db.Puesto.Where(p => !p.eliminado).OrderBy(p => p.nombre), "id_puesto", "nombre", editContrato.id_puesto);
            ViewBag.estado_empleado = new SelectList(db.Estado_Empleado.OrderBy(e => e.nombre), "id_estado_empleado", "nombre", editContrato.id_estado_empleado);
            ViewBag.nombre_empleado =
                editContrato.Empleado.primer_nombre + " " +
                (!String.IsNullOrEmpty(editContrato.Empleado.segundo_nombre) ? editContrato.Empleado.segundo_nombre + " " : "") +
                editContrato.Empleado.primer_apellido + " " +
                (!String.IsNullOrEmpty(editContrato.Empleado.segundo_apellido) ? editContrato.Empleado.segundo_apellido : "");

            return(View("Edit", editContrato));
        }
示例#10
0
        public Contratacion GetContratacion(int id)
        {
            Contratacion ContratacionResultado = new Contratacion();

            Contratacioneservice Contratacioneservice = new Contratacioneservice();

            ContratacionResultado = Contratacioneservice.GetContratacion(id);

            return(ContratacionResultado);
        }
示例#11
0
        public String PagarContratacion(Usuario usuario, Contratacion contratacion)
        {
            Environment.SetEnvironmentVariable("MP_ACCESS_TOKEN", "TEST-7861638524601067-100603-29811dd016706b7463468ecffe4a41ac-158446926");
            MercadoPago.SDK.CleanConfiguration();
            MercadoPago.SDK.AccessToken = Environment.GetEnvironmentVariable("MP_ACCESS_TOKEN");

            String siteURL;

            if (ambiente == "Desarrollo")
            {
                siteURL = "http://localhost:55115";
            }
            else
            {
                siteURL = "http://ec2-3-82-109-216.compute-1.amazonaws.com/";
            }

            double precioPublicacion  = contratacion.Publicacion.Precio;
            int    cantidadDeDias     = contratacion.FechaContratacion.Count();
            double precioContratacion = precioPublicacion * cantidadDeDias;

            // CREA UN OBJETO DE PREFERENCIA
            Preference preference = new Preference();

            // CREA UN ÍTEM EN LA PREFERENCIA
            preference.Items.Add(new Item()
            {
                Title      = contratacion.Publicacion.Titulo,
                Id         = contratacion.Id.ToString(),
                Quantity   = 1,
                CurrencyId = CurrencyId.ARS,
                UnitPrice  = (decimal)precioContratacion
            });

            preference.Payer = new Payer()
            {
                Email = usuario.Email,
            };

            preference.ExternalReference = contratacion.Id.ToString();

            preference.BackUrls = new BackUrls()
            {
                Success = siteURL + "/MercadoPago/PagoExitosoContratacion",
                Failure = siteURL + "/MercadoPago/PagoError",
                Pending = siteURL + "/MercadoPago/PagoPendiente"
            };

            preference.AutoReturn = AutoReturnType.approved;

            // GUARDA Y PUBLICA EL OBJETO DE PREFERENCIA
            preference.Save();

            return(preference.InitPoint);
        }
示例#12
0
        // GET: rrhh/Contratacions/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Contratacion contratacion = db.Contratacion.Find(id);

            if (contratacion == null)
            {
                return(HttpNotFound());
            }
            return(View(contratacion));
        }
示例#13
0
        internal Contratacion nuevaContratacion(Publicacion publicacion, Usuario usuario)
        {
            Contratacion contratacionNueva = new Contratacion();

            contratacionNueva.IdPublicacion         = publicacion.Id;
            contratacionNueva.IdUsuario             = usuario.Id;
            contratacionNueva.FlagCalificoProveedor = 0;
            contratacionNueva.FlagCalificoCliente   = 0;

            context.Contratacion.AddObject(contratacionNueva);
            context.SaveChanges();

            return(contratacionNueva);
        }
示例#14
0
        public int Guardar(Contratacion value)
        {
            Contratacion ContratacionGuardado = new Contratacion();

            int resultado = 0;

            // usuarioGuardado.Id = int.Parse(DateTime.Now.Ticks.ToString().Substring(0, 5));
            ContratacionGuardado.Titulo                = value.Titulo;
            ContratacionGuardado.Descripcion           = value.Descripcion;
            ContratacionGuardado.IdUsuarioAlta         = value.IdUsuarioAlta;
            ContratacionGuardado.IdUsuarioModificacion = value.IdUsuarioModificacion;
            ContratacionGuardado.Locacion              = value.Locacion;
            ContratacionGuardado.MaximoHijos           = value.MaximoHijos;
            ContratacionGuardado.PrecioTotal           = value.PrecioTotal;
            int anioContratacion   = value.FechaContratacion.Year;
            int mesContratacion    = value.FechaContratacion.Month;
            int diaContratacion    = value.FechaContratacion.Day;
            int horaContratacion   = value.HoraContratacion;
            int minutoContratacion = value.MinutoContratacion;

            ContratacionGuardado.FechaContratacion = new DateTime(anioContratacion, mesContratacion, diaContratacion, horaContratacion, minutoContratacion, 0);

            Contratacioneservice foroService = new Contratacioneservice();

            if (value.Id == 0)
            {
                resultado = foroService.CrearContratacion(ContratacionGuardado);
                value.Id  = resultado;

                if (value.Fotografias != null)
                {
                    foreach (Fotografia fotografia in value.Fotografias)
                    {
                        fotografia.IdContratacion = value.Id;
                    }
                }
            }
            else
            {
                ContratacionGuardado.Id = value.Id;
                resultado = foroService.EditarContratacion(ContratacionGuardado);
            }

            FotografiaService fotografiaService = new FotografiaService();

            fotografiaService.AdjuntarFotografiasContrataciones(value.Fotografias);

            return(ContratacionGuardado.Id);
        }
示例#15
0
        // GET: rrhh/Contratacions/Create
        public ActionResult Create(int id_empleado)
        {
            Empleado empleado = db.Empleado.SingleOrDefault(e => e.id_empleado == id_empleado && e.activo);

            if (empleado == null)
            {
                return(HttpNotFound());
            }
            ViewBag.empresa         = new SelectList(db.Empresa.Where(e => !e.eliminado), "id_empresa", "nombre");
            ViewBag.nombre_empleado = empleado.primer_nombre + " " + (!String.IsNullOrEmpty(empleado.segundo_nombre) ? empleado.segundo_nombre + " " : "") +
                                      empleado.primer_apellido + " " + (!String.IsNullOrEmpty(empleado.segundo_apellido) ? empleado.segundo_apellido : "");
            Contratacion contrato = new Contratacion();

            contrato.id_empleado = empleado.id_empleado;
            return(View(contrato));
        }
        public ActionResult CrearContratacion(String[] diasSeleccionados, int usuarioId, int publicacionId)
        {
            using (var db = new SQLServerContext())
            {
                var usuario     = db.Usuarios.SingleOrDefault(u => u.Id == usuarioId);
                var publicacion = db.Publicaciones.SingleOrDefault(p => p.Id == publicacionId);

                if (publicacion.Usuario.Id == usuarioId)
                {
                    return(Json("NOTOK", JsonRequestBehavior.AllowGet));
                }

                Contratacion contratacion = new Contratacion
                {
                    Estado      = "Pendiente",
                    Publicacion = publicacion,
                    Usuario     = usuario
                };

                db.Contrataciones.Add(contratacion);

                DateTime fecha;

                foreach (var diaSeleccionado in diasSeleccionados)
                {
                    fecha = TransformarFecha(diaSeleccionado);

                    if (EstaDisponibleLaFecha(fecha, publicacion))
                    {
                        FechaContratacion fechaContratacion = new FechaContratacion
                        {
                            Contratacion = contratacion,
                            Fecha        = fecha,
                            Reservada    = true
                        };

                        db.FechasXContratacion.Add(fechaContratacion);
                    }
                }

                db.SaveChanges();

                return(Json(contratacion.Id, JsonRequestBehavior.AllowGet));
            }
        }
示例#17
0
        public List <Contratacion> GetContrataciones(string param)
        {
            List <Contratacion> resultado = new List <Contratacion>();

            string connectionString = ConfigurationManager.AppSettings["ConnectionString"].ToString();
            Engine engine           = new Engine(connectionString);

            StringBuilder query = new StringBuilder();

            query.Append("select Contrataciones.Id, Contrataciones.Titulo, Contrataciones.Descripcion, Contrataciones.MaximoHijos, Contrataciones.Locacion, Contrataciones.PrecioTotal, Contrataciones.IdUsuarioAlta, Contrataciones.FechaAlta ");
            query.Append(" , autor.Id as IdAutor, autor.Nombres, autor.Apellido1, autor.Apellido2 ");
            query.Append(" from Contrataciones");
            query.Append(" inner join usuarios autor on Contrataciones.IdUsuarioAlta = autor.Id ");
            query.Append(" where Contrataciones.fechabaja is null  ");

            if (!string.IsNullOrEmpty(param))
            {
                query.Append(" and (Contrataciones.titulo like '%" + param + "%' OR Contrataciones.resumen like '%" + param + "%' OR Contrataciones.descripcion like '%" + param + "%' ");
            }

            DataTable table = engine.Query(query.ToString());

            foreach (DataRow dr in table.Rows)
            {
                Contratacion ContratacionFila = new Contratacion();

                ContratacionFila.Id                = int.Parse(dr["Id"].ToString());
                ContratacionFila.Titulo            = dr["Titulo"].ToString();
                ContratacionFila.Descripcion       = dr["Descripcion"].ToString();
                ContratacionFila.MaximoHijos       = int.Parse(dr["MaximoHijos"].ToString());
                ContratacionFila.Locacion          = dr["Locacion"].ToString();
                ContratacionFila.PrecioTotal       = dr["PrecioTotal"].ToString();
                ContratacionFila.Autor             = dr["Nombres"].ToString() + " " + dr["Apellido1"].ToString() + " " + dr["Apellido2"].ToString();
                ContratacionFila.IdUsuarioAlta     = int.Parse(dr["IdUsuarioAlta"].ToString());
                ContratacionFila.FechaAlta         = DateTime.Parse(dr["FechaAlta"].ToString());
                ContratacionFila.RutaFotoAutor     = new FotografiaService().ObtenerFotoPrincipal(ContratacionFila.IdUsuarioAlta).RutaFoto;
                ContratacionFila.RutaFotoPrincipal = new FotografiaService().ObtenerFotoPrincipalContratacion(ContratacionFila.Id).RutaFoto;
                ContratacionFila.Fotografias       = new FotografiaService().ObtenerFotosContrataciones(ContratacionFila.Id);
                ContratacionFila.Apuntados         = GetApuntadosContratacion(ContratacionFila.Id);
                resultado.Add(ContratacionFila);
            }

            return(resultado);
        }
        public ActionResult PagoExitosoContratacion()
        {
            if (Session["UserId"] == null)
            {
                return(RedirectToAction("Login", "Account"));
            }

            String externalReference = Request.QueryString["external_reference"];

            if (String.IsNullOrEmpty(externalReference) == false && Session["UserId"] != null && Session["isAdmin"] == null)
            {
                int contratacionId = Int32.Parse(externalReference);
                int usuarioId      = Int32.Parse(Session["UserId"].ToString());

                using (var db = new SQLServerContext())
                {
                    Contratacion contratacion = db.Contrataciones.Include("Publicacion").FirstOrDefault(c => c.Id == contratacionId);
                    contratacion.Estado = "Contratada";

                    Usuario usuario = db.Usuarios.Find(usuarioId);

                    Pago pago = new Pago
                    {
                        Aprobado    = true,
                        Concepto    = "Contratación",
                        FechaDePago = Convert.ToDateTime(DateTime.Now),
                        Publicacion = contratacion.Publicacion,
                        Usuario     = usuario
                    };

                    contratacion.Pago = pago;

                    db.Pagos.Add(pago);
                    db.SaveChanges();

                    return(View(contratacion.Publicacion.Usuario));
                }
            }
            else
            {
                return(View("NotAuthorized"));
            }
        }
示例#19
0
        // GET: rrhh/Contratacions/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Contratacion contrato = db.Contratacion.SingleOrDefault(c => c.id_contratacion == id && c.activo);

            if (contrato == null)
            {
                return(HttpNotFound());
            }

            ViewBag.estado_empleado = new SelectList(db.Estado_Empleado.Where(t => !t.eliminado).OrderBy(t => t.nombre), "id_estado_empleado", "nombre", contrato.id_estado_empleado);
            ViewBag.nombre_empleado =
                contrato.Empleado.primer_nombre + " " +
                (!String.IsNullOrEmpty(contrato.Empleado.segundo_nombre) ? contrato.Empleado.segundo_nombre + " " : "") +
                contrato.Empleado.primer_apellido + " " +
                (!String.IsNullOrEmpty(contrato.Empleado.segundo_apellido) ? contrato.Empleado.segundo_apellido : "");
            ViewBag.fecha_inicio_contrato = contrato.fecha_inicio.ToString("dd/MM/yyyy");
            return(View(contrato));
        }
示例#20
0
        public int EditarContratacion(Contratacion Contratacion)
        {
            string connectionString = ConfigurationManager.AppSettings["ConnectionString"].ToString();
            Engine engine           = new Engine(connectionString);

            StringBuilder comando = new StringBuilder();

            comando.Append("update Contrataciones set ");
            comando.Append("titulo = '" + Contratacion.Titulo + "'");
            comando.Append(", descripcion = '" + Contratacion.Descripcion + "'");
            comando.Append(", maximohijos = " + Contratacion.MaximoHijos);
            comando.Append(", preciototal = '" + Contratacion.PrecioTotal + "'");
            comando.Append(", locacion = '" + Contratacion.Locacion + "'");
            comando.Append(", fechaContratacion = '" + Contratacion.FechaContratacion.ToString("yyyy-MM-dd HH:mm:ss") + "'");
            comando.Append(", fechamodificacion =  NOW()");
            comando.Append(", idusuariomodificacion = " + Contratacion.IdUsuarioModificacion);
            comando.Append(" where id=" + Contratacion.Id);

            int resultado = engine.Execute(comando.ToString());

            return(Contratacion.Id);
        }
示例#21
0
        public Contratacion GetContratacion(int idContratacion)
        {
            Contratacion resultado = new Contratacion();

            string connectionString = ConfigurationManager.AppSettings["ConnectionString"].ToString();
            Engine engine           = new Engine(connectionString);

            StringBuilder query = new StringBuilder();

            query.Append("select Contrataciones.Id, Contrataciones.Titulo, Contrataciones.Descripcion, Contrataciones.Locacion, Contrataciones.PrecioTotal, Contrataciones.MaximoHijos, Contrataciones.FechaContratacion, Contrataciones.FechaAlta ");
            query.Append(" , autor.Id as IdAutor, autor.Nombres, autor.Apellido1, autor.Apellido2 ");
            query.Append(" from Contrataciones");
            query.Append(" inner join usuarios autor on Contrataciones.IdUsuarioAlta = autor.Id ");
            query.Append("where Contrataciones.Id = " + idContratacion);


            DataTable table = engine.Query(query.ToString());

            foreach (DataRow dr in table.Rows)
            {
                resultado.Id                = int.Parse(dr["Id"].ToString());
                resultado.Titulo            = dr["Titulo"].ToString();
                resultado.Descripcion       = dr["Descripcion"].ToString();
                resultado.Locacion          = dr["Locacion"].ToString();
                resultado.MaximoHijos       = int.Parse(dr["MaximoHijos"].ToString());
                resultado.PrecioTotal       = dr["PrecioTotal"].ToString();
                resultado.Autor             = dr["Nombres"].ToString() + " " + dr["Apellido1"].ToString() + " " + dr["Apellido2"].ToString();
                resultado.IdUsuarioAlta     = int.Parse(dr["IdAutor"].ToString());
                resultado.FechaAlta         = DateTime.Parse(dr["FechaAlta"].ToString());
                resultado.FechaContratacion = DateTime.Parse(dr["FechaContratacion"].ToString());
                resultado.Apuntados         = GetApuntadosContratacion(resultado.Id);
                FotografiaService fotografiaService = new FotografiaService();
                resultado.Fotografias = fotografiaService.ObtenerFotosContrataciones(resultado.Id);
            }

            return(resultado);
        }
        internal void calificarUsuario(string comentario, Contratacion contratacion, TipoEvaluacion tipoEvaluacion, TipoCalificacion tipoCalificacion, int idTipoCalificacion)
        {
            Calificacion calificacion = new Calificacion();

            if (idTipoCalificacion == 1) // Si cliente puntua al prestador.
            {
                calificacion.IdCalificador = contratacion.IdUsuario;
                calificacion.IdCalificado  = contratacion.Publicacion.IdUsuario;

                Contratacion cambioEstado = context.Contratacion.Where(e => e.Id == contratacion.Id).FirstOrDefault();
                cambioEstado.FlagCalificoCliente = 1; // En este caso se marca que el cliente califico al prestador.

                Puntaje puntaje = context.Puntaje.Where(e => e.IdPublicacion == contratacion.IdPublicacion).FirstOrDefault();
                // Cuando califica el cliente hace el cambio en el puntaje de la publicación.

                // Este bloque de código es para llenar la TABLA PUNTAJE perteneciente al prestador por ser dueño de la publicación.
                if (puntaje == null) // Al no existir el puntaje lo crea.
                {
                    Puntaje puntajeNuevo = new Puntaje();

                    puntajeNuevo.IdPublicacion = contratacion.IdPublicacion;

                    if (tipoEvaluacion.Id == 1)
                    {
                        puntajeNuevo.Positivo = 1;
                    }
                    else
                    {
                        if (tipoEvaluacion.Id == 2)
                        {
                            puntajeNuevo.Neutro = 1;
                        }
                        else
                        {
                            puntajeNuevo.Negativo = 1;
                        }
                    }

                    var total = puntajeNuevo.Positivo - puntajeNuevo.Negativo;

                    puntajeNuevo.Total = Convert.ToInt16(total);

                    context.Puntaje.AddObject(puntajeNuevo);
                }
                else // Al existir el puntaje lo modifica.
                {
                    if (tipoEvaluacion.Id == 1)
                    {
                        puntaje.Positivo = Convert.ToInt16(puntaje.Positivo + 1);
                        puntaje.Total    = Convert.ToInt16(puntaje.Total + 1);
                    }
                    else
                    {
                        if (tipoEvaluacion.Id == 2)
                        {
                            puntaje.Neutro = Convert.ToInt16(puntaje.Neutro + 1);
                            // Puntaje Total no tiene cambios.
                        }
                        else
                        {
                            puntaje.Negativo = Convert.ToInt16(puntaje.Negativo + 1);
                            puntaje.Total    = Convert.ToInt16(puntaje.Total - 1);
                        }
                    }
                }
            }
            else // Si prestador puntua al cliente.
            {
                calificacion.IdCalificador = contratacion.Publicacion.IdUsuario;
                calificacion.IdCalificado  = contratacion.IdUsuario;

                Contratacion cambioEstado = context.Contratacion.Where(e => e.Id == contratacion.Id).FirstOrDefault();
                cambioEstado.FlagCalificoProveedor = 1; // En este caso se marca que el prestador califico al cliente.

                PuntajeCliente puntajeCliente = context.PuntajeCliente.Where(e => e.IdUsuario == contratacion.IdUsuario).FirstOrDefault();
                // Cuando califica el prestador hace el cambio en el puntaje del cliente.

                // Este bloque de código es para llenar la TABLA PUNTAJE CLIENTE.
                if (puntajeCliente == null) // Al no existir el puntaje lo crea.
                {
                    PuntajeCliente puntajeClienteNuevo = new PuntajeCliente();

                    puntajeClienteNuevo.IdUsuario = contratacion.IdUsuario;

                    if (tipoEvaluacion.Id == 1)
                    {
                        puntajeClienteNuevo.Positivo = 1;
                    }
                    else
                    {
                        if (tipoEvaluacion.Id == 2)
                        {
                            puntajeClienteNuevo.Neutro = 1;
                        }
                        else
                        {
                            puntajeClienteNuevo.Negativo = 1;
                        }
                    }

                    var total = puntajeClienteNuevo.Positivo - puntajeClienteNuevo.Negativo;

                    puntajeClienteNuevo.Total = Convert.ToInt16(total);

                    context.PuntajeCliente.AddObject(puntajeClienteNuevo);
                }
                else // Al existir el puntaje lo modifica.
                {
                    if (tipoEvaluacion.Id == 1)
                    {
                        puntajeCliente.Positivo = Convert.ToInt16(puntajeCliente.Positivo + 1);
                        puntajeCliente.Total    = Convert.ToInt16(puntajeCliente.Total + 1);
                    }
                    else
                    {
                        if (tipoEvaluacion.Id == 2)
                        {
                            puntajeCliente.Neutro = Convert.ToInt16(puntajeCliente.Neutro + 1);
                            // Puntaje Total no tiene cambios.
                        }
                        else
                        {
                            puntajeCliente.Negativo = Convert.ToInt16(puntajeCliente.Negativo + 1);
                            puntajeCliente.Total    = Convert.ToInt16(puntajeCliente.Total - 1);
                        }
                    }
                }
            }

            // Termino de armar la calificación
            calificacion.Descripcion        = comentario;
            calificacion.IdContratacion     = contratacion.Id;
            calificacion.IdTipoCalificacion = tipoCalificacion.Id;
            calificacion.IdTipoEvaluacion   = tipoEvaluacion.Id;
            calificacion.FechaCalificacion  = DateTime.Now;
            calificacion.FlagDenunciado     = 0; //no fue denunciada esa calificacion todavia
            calificacion.FlagReplicado      = 0; //no fue replicado esa calificacion todavia

            context.Calificacion.AddObject(calificacion);

            /*    if (idTipoCalificacion == 1)
             *  {
             *
             *
             *  }
             *  else
             *  {
             *
             *
             *  } */

            context.SaveChanges();
        }
示例#23
0
        public ActionResult NuevoCodigoEmpleado(Contratacion contrato)
        {
            Empleado empleado = db.Empleado.SingleOrDefault(e => e.id_empleado == contrato.id_empleado && !e.eliminado);

            if (empleado == null)
            {
                return(HttpNotFound());
            }
            if (empleado.Contratacion.Where(c => c.activo).Count() > 0)
            {
                ContextMessage msg = new ContextMessage(ContextMessage.Info, "No se pudo crear el empleado a partir de la información existente. El empleado seleccionado todavía esta de Alta..");
                msg.ReturnUrl = null;
                TempData[User.Identity.Name] = msg;
                return(RedirectToAction("Mensaje"));
            }
            int id_usuario = Cache.DiccionarioUsuariosLogueados[User.Identity.Name].usuario.id_usuario;

            using (DbContextTransaction tran = db.Database.BeginTransaction())
            {
                try
                {
                    Empleado nuevoEmpleado = CopiarEmpleado(empleado);
                    db.Empleado.Add(nuevoEmpleado);
                    db.SaveChanges();
                    //Copiar Telefonos
                    foreach (var telefono in empleado.Empleado_Telefono.Where(e => e.activo && !e.eliminado))
                    {
                        Empleado_Telefono nuevoTelefono = new Empleado_Telefono();
                        nuevoTelefono.telefono            = telefono.telefono;
                        nuevoTelefono.extension           = telefono.extension;
                        nuevoTelefono.id_tipo_telefono    = telefono.id_tipo_telefono;
                        nuevoTelefono.comentario          = telefono.comentario;
                        nuevoTelefono.activo              = true;
                        nuevoTelefono.eliminado           = false;
                        nuevoTelefono.fecha_creacion      = DateTime.Now;
                        nuevoTelefono.id_usuario_creacion = id_usuario;
                        nuevoTelefono.id_empleado         = nuevoEmpleado.id_empleado;
                        db.Empleado_Telefono.Add(nuevoTelefono);
                    }
                    //Copiar direcciones
                    foreach (var direccion in empleado.Empleado_Direcciones.Where(d => d.activo && !d.eliminado))
                    {
                        Empleado_Direcciones nuevaDireccion = CopiarDireccion(direccion);
                        nuevaDireccion.id_empleado = nuevoEmpleado.id_empleado;
                        db.Empleado_Direcciones.Add(nuevaDireccion);
                    }
                    //Copiar Archivos
                    foreach (var archivo in empleado.Archivo_Empleado.Where(e => e.activo && !e.eliminado && e.Archivo.id_tipo_archivo == (int)Catalogos.Tipo_Archivo.Foto_Perfil))
                    {
                        Archivo imagen     = new Archivo();
                        string  name       = "foto_" + nuevoEmpleado.id_empleado;
                        string  extension  = ".jpg";
                        string  ruta_vieja = archivo.Archivo.ubicacion;
                        imagen.id_tipo_archivo     = (int)Catalogos.Tipo_Archivo.Foto_Perfil;
                        imagen.id_usuario_creacion = id_usuario;
                        imagen.fecha_creacion      = DateTime.Now;
                        imagen.activo    = true; imagen.eliminado = false;
                        imagen.nombre    = name + extension;
                        imagen.ubicacion = "~/Archivos/Foto Perfil/" + name + extension;

                        db.Archivo.Add(imagen);
                        db.SaveChanges();

                        System.IO.File.Copy(Server.MapPath(ruta_vieja), Server.MapPath(imagen.ubicacion), true);

                        //Relacionar la imagen con el usuario
                        Archivo_Empleado nuevo_archivo_empleado = new Archivo_Empleado();
                        nuevo_archivo_empleado.id_archivo          = imagen.id_archivo;
                        nuevo_archivo_empleado.id_empleado         = nuevoEmpleado.id_empleado;
                        nuevo_archivo_empleado.id_usuario_creacion = id_usuario;
                        nuevo_archivo_empleado.fecha_creacion      = DateTime.Now;
                        nuevo_archivo_empleado.activo    = true;
                        nuevo_archivo_empleado.eliminado = false;
                        db.Archivo_Empleado.Add(nuevo_archivo_empleado);
                    }
                    //Asignar Salario
                    Salario salario = new Salario();
                    Puesto  puesto  = db.Puesto.SingleOrDefault(p => p.id_puesto == contrato.id_puesto);
                    salario.bono_decreto        = puesto.bono_decreto;
                    salario.bono_extra          = puesto.bono_extra;
                    salario.sueldo_base         = puesto.sueldo_base;
                    salario.prestaciones        = puesto.prestaciones;
                    salario.activo              = true;
                    salario.id_empleado         = contrato.id_empleado;
                    salario.eliminado           = false;
                    salario.fecha_creacion      = contrato.fecha_creacion = DateTime.Now;
                    salario.id_usuario_creacion = id_usuario;

                    db.Salario.Add(salario);
                    db.SaveChanges();

                    //Crear nuevo contrato
                    contrato.id_salario          = salario.id_salario;
                    contrato.id_empleado         = nuevoEmpleado.id_empleado;
                    contrato.id_ubicacion        = contrato.id_ubicacion == 0 ? (int)Catalogos.Ubicacion.Central : contrato.id_ubicacion;
                    contrato.fecha_creacion      = DateTime.Now;
                    contrato.id_usuario_creacion = id_usuario;
                    contrato.id_estado_empleado  = (int)Catalogos.Estado_Empleado.Alta;
                    contrato.activo    = true;
                    contrato.eliminado = false;
                    db.Contratacion.Add(contrato);
                    db.SaveChanges();

                    //Crear periodo de vacaciones para el nuevo contrato
                    Vacacion_Contrato vacacion_contrato = NuevoVacacion_Contrato();
                    vacacion_contrato.id_contratacion = contrato.id_contratacion;
                    vacacion_contrato.dias_total      = 15;
                    vacacion_contrato.id_empleado     = contrato.id_empleado;
                    vacacion_contrato.id_periodo      = db.Periodo.Where(p => p.activo && !p.eliminado).FirstOrDefault().id_periodo;
                    db.Vacacion_Contrato.Add(vacacion_contrato);
                    db.SaveChanges();

                    tran.Commit();
                    return(RedirectToAction("Details", "Empleado", new { id = nuevoEmpleado.id_empleado }));
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    ContextMessage msg = new ContextMessage(ContextMessage.Error, "Ocurrio un error innesperado. " + ex.Message);
                    msg.ReturnUrl = null;
                    TempData[User.Identity.Name] = msg;
                    return(RedirectToAction("Mensaje"));
                }
            }
        }
示例#24
0
        public ActionResult Create(Contratacion contrato)
        {
            ModelState.Clear();
            if (db.Contratacion.Where(c => c.activo && !c.eliminado && c.id_empleado == contrato.id_empleado).Count() > 0)
            {
                ContextMessage msg = new ContextMessage(ContextMessage.Error, "El empleado ya tiene un contrato activo en una empresa.");
                msg.ReturnUrl = Url.Action("Details", "Empleado", new { id = contrato.id_empleado });
                TempData[User.Identity.Name] = msg;
                return(RedirectToAction("Mensaje"));
            }
            if (ModelState.IsValid)
            {
                using (DbContextTransaction tran = db.Database.BeginTransaction())
                {
                    try
                    {
                        Puesto puesto = db.Puesto.SingleOrDefault(p => p.id_puesto == contrato.id_puesto);
                        contrato.id_ubicacion = (int)Catalogos.Ubicacion.Central;
                        Salario salario = new Salario();
                        salario.bono_decreto        = puesto.bono_decreto;
                        salario.bono_extra          = puesto.bono_extra;
                        salario.sueldo_base         = puesto.sueldo_base;
                        salario.prestaciones        = puesto.prestaciones;
                        salario.activo              = contrato.activo = true;
                        salario.id_empleado         = contrato.id_empleado;
                        salario.eliminado           = contrato.eliminado = false;
                        salario.fecha_creacion      = contrato.fecha_creacion = DateTime.Now;
                        salario.id_usuario_creacion = contrato.id_usuario_creacion = Cache.DiccionarioUsuariosLogueados[User.Identity.Name].usuario.id_usuario;

                        contrato.id_estado_empleado = (int)Catalogos.Estado_Empleado.Alta;
                        db.Salario.Add(salario);
                        db.SaveChanges();

                        contrato.id_salario = salario.id_salario;
                        db.Contratacion.Add(contrato);

                        db.SaveChanges();

                        //Crear periodo de vacaciones para el nuevo contrato
                        Vacacion_Contrato vacacion_contrato = NuevoVacacion_Contrato();
                        vacacion_contrato.id_contratacion = contrato.id_contratacion;
                        vacacion_contrato.dias_total      = 15;
                        vacacion_contrato.id_empleado     = contrato.id_empleado;
                        vacacion_contrato.id_periodo      = db.Periodo.Where(p => p.activo && !p.eliminado).FirstOrDefault().id_periodo;
                        db.Vacacion_Contrato.Add(vacacion_contrato);
                        db.SaveChanges();
                        tran.Commit();
                        return(RedirectToAction("Details", "Empleado", new { id = contrato.id_empleado, error = "" }));
                    }
                    catch
                    {
                        tran.Rollback();
                        ModelState.AddModelError("", "Fallo en la creación del contrato. Datos no guardados.");
                    }
                }
            }
            Empleado empleado = db.Empleado.SingleOrDefault(e => e.id_empleado == contrato.id_empleado && e.activo);

            if (empleado == null)
            {
                return(HttpNotFound());
            }
            ViewBag.empresa = new SelectList(db.Empresa.Where(p => !p.eliminado), "id_empresa", "nombre", contrato.id_empresa);
            ViewBag.fecha_inicio_contrato = contrato.fecha_inicio.ToString("dd/MM/yyyy");
            ViewBag.nombre_empleado       =
                empleado.primer_nombre + " " +
                (!String.IsNullOrEmpty(empleado.segundo_nombre) ? empleado.segundo_nombre + " " : "") +
                empleado.primer_apellido + " " +
                (!String.IsNullOrEmpty(empleado.segundo_apellido) ? empleado.segundo_apellido : "");
            contrato             = new Contratacion();
            contrato.id_empleado = empleado.id_empleado;
            return(View(contrato));
        }