Example #1
0
        public static Personal PersonalUltimoRegistroPorBodega(int id_bodega)
        {
            Personal oP = new Personal();

            try
            {
                Personal_registro oPR = new Personal_registro()
                {
                    Id_bodega = id_bodega
                };
                Personal_registroMng oPRMng = new Personal_registroMng()
                {
                    O_Personal_registro = oPR
                };
                oPRMng.selUltPorBodega();

                Personal_qr oPQr = new Personal_qr()
                {
                    Id_personal = oPR.Id_personal
                };
                Personal_qrMng oPQrMng = new Personal_qrMng()
                {
                    O_Personal_qr = oPQr
                };
                oPQrMng.selByIdPersonal();
                oP.PQr = oPQr;

                oP.Id = oPQr.Id_personal;
                PersonalMng oPMng = new PersonalMng()
                {
                    O_Personal = oP
                };
                oPMng.selById();
                oP.PerReg = oPR;
            }
            catch
            {
                throw;
            }
            return(oP);
        }
Example #2
0
        public static Personal_qr PersonalRegistro(Personal_qr o)
        {
            bool           cumpleReglas = false;
            IDbTransaction trans        = null;

            try
            {
                Personal_qrMng oPQrMng = new Personal_qrMng()
                {
                    O_Personal_qr = o
                };
                oPQrMng.selByIdf();

                Personal_registro oPreg = new Personal_registro()
                {
                    Id_personal = o.Id_personal, Id_bodega = o.Id_bodega
                };
                Personal_registroMng oMng = new Personal_registroMng()
                {
                    O_Personal_registro = oPreg
                };
                oMng.selByIdPersona();

                Personal oPer = new Personal()
                {
                    Id = o.Id_personal
                };
                PersonalMng oPerMng = new PersonalMng()
                {
                    O_Personal = oPer
                };
                oPerMng.selById();
                o.PPersonal = oPer;

                Personal_regla_rol oPerRegRol = new Personal_regla_rol()
                {
                    Id_personal_rol = oPer.Id_personal_rol
                };
                Personal_regla_rolMng oPerRegRolMng = new Personal_regla_rolMng()
                {
                    O_Personal_regla_rol = oPerRegRol
                };
                oPerRegRolMng.selByIdPersonalRol();

                foreach (Personal_regla_rol itemPRR in oPerRegRolMng.Lst)
                {
                    Personal_regla oPRegla = new Personal_regla()
                    {
                        Id = itemPRR.Id_personal_regla
                    };
                    Personal_reglaMng oPregMng = new Personal_reglaMng()
                    {
                        O_Personal_regla = oPRegla
                    };
                    oPregMng.selById();

                    TimeSpan ts    = DateTime.Now - oPreg.Fecha_hora;
                    int      valor = Convert.ToInt32(oPRegla.Valor);
                    if (ts.TotalMinutes > valor)
                    {
                        cumpleReglas = true;
                    }
                    else
                    {
                        o.Mensaje = oPRegla.Mensaje.Replace("{{valor}}", Math.Round(Math.Abs(ts.TotalMinutes - valor), 0).ToString());
                    }
                }

                if (!oPer.IsActive)
                {
                    o.Mensaje = "El personal está dado de baja y no puede acceder a la sede, favor de verificar con el área de Recursos Humanos";
                }
                else if (oPer.Boletinado)
                {
                    o.Mensaje = "El personal está boletinado y no puede acceder a ninguna sede, favor de verificar con el área de Recursos Humanos";
                }
                else if (cumpleReglas)
                {
                    switch (o.Id_registro_tipo)
                    {
                    case 1:     //Registro de eventos ordinarios
                        oMng.add();
                        o.PPerReg = oPreg;
                        o.Mensaje = "Registro Exitoso";
                        break;

                    case 2:     //Registro Extraordinario con motivo
                        trans = GenericDataAccess.BeginTransaction();
                        oMng.add(trans);
                        Personal_registro_extMng oExtMng = new Personal_registro_extMng();
                        Personal_registro_ext    oExt    = new Personal_registro_ext()
                        {
                            Id_personal_registro = oPreg.Id, Motivo = o.Motivo
                        };
                        oExtMng.O_Personal_registro_ext = oExt;
                        oExtMng.add(trans);
                        GenericDataAccess.CommitTransaction(trans);
                        o.PPerReg = oPreg;
                        o.Mensaje = "Registro Exitoso";
                        break;

                    case 3:     //Registro de horas extras, validar que tenga sus cuatro registros ordinarios previos
                        if (oMng.getRecordsByIdPersona() < 4)
                        {
                            o.Mensaje = "El personal no puede cubrir un horario extra por que no cuenta con sus 4 registros";
                        }
                        else
                        {
                            oMng.add();
                            o.PPerReg = oPreg;
                            o.Mensaje = "Registro Exitoso";
                        }
                        break;

                    default:
                        break;
                    }
                }
            }
            catch
            {
                if (trans != null)
                {
                    GenericDataAccess.RollbackTransaction(trans);
                }
                throw;
            }
            return(o);
        }