Example #1
0
        public IHttpActionResult GetRols(int id)
        {
            CustomUser userInDB = null;

            userInDB = _context.CustomUsers.Include(x => x.People).FirstOrDefault(d => d.Id == id);

            if (userInDB == null)
            {
                return(NotFound());
            }

            var rols = activeDirectory.getUserRols(userInDB).Select(x => new { x.Id, x.Name });

            return(Ok(rols));
        }
        public IHttpActionResult GetMenu()
        {
            var start = DateTime.Now;
            int userid;
            IEnumerable <string> headerId;

            if (!Request.Headers.TryGetValues("id", out headerId))
            {
                return(BadRequest());
            }
            if (!Int32.TryParse(headerId.FirstOrDefault(), out userid))
            {
                return(BadRequest());
            }

            var user = _context.CustomUsers.Include(x => x.People).FirstOrDefault(cu => cu.Id == userid);

            if (user == null)
            {
                return(Unauthorized());
            }
            var uexist = DateTime.Now;

            var rls      = activeDirectory.getUserRols(user).Select(x => x.Id);
            var ugetrols = DateTime.Now;

            var br     = activeDirectory.getUserBranches(user);
            var ugetbr = DateTime.Now;

            List <Access> access;

            // activeDirectory.AddUserToGroup("*****@*****.**", "Personas.Segmentos.Cochabamba");
            //if admin return all
            if (activeDirectory.memberOf(user, "Personas.Admin"))
            {
                access = _context.Accesses
                         .Include(a => a.Resource.Module)
                         .Include(a => a.Resource).ToList();
            }
            // else search all the user access
            else
            {
                access = _context.RolshaAccesses.Include(a => a.Access)
                         .Include(a => a.Rol)
                         .Include(a => a.Access.Resource.Module)
                         .Include(a => a.Access.Resource).ToList()
                         .Where(r => rls.Contains(r.Rolid)).Select(a => a.Access).ToList();
            }

            List <dynamic> res           = new List <dynamic>();
            var            listModules   = access.Select(a => a.Resource.Module).Distinct().OrderBy(x => x.Id);
            var            listResources = access.Select(a => a.Resource).Distinct().OrderBy(x => x.Id);

            foreach (var module in listModules)
            {
                List <dynamic> children = new List <dynamic>();
                foreach (var child in listResources.Where(c => c.ModuleId == module.Id))
                {
                    var     listmethods = access.Where(a => a.ResourceId == child.Id).Select(a => a.Method).Distinct();
                    dynamic c           = new JObject();
                    c.name    = child.Name;
                    c.path    = child.Path;
                    c.methods = JArray.FromObject(listmethods.ToArray());
                    children.Add(c);
                }

                dynamic r = new JObject();
                r.name      = module.Name;
                r.icon      = module.Icon;
                r.collapsed = true;
                r.children  = JArray.FromObject(children.ToArray());
                res.Add(r);
            }
            var caljson = DateTime.Now;

            var t1 = uexist - start;
            var t2 = ugetrols - uexist;
            var t3 = ugetbr - ugetrols;
            var t4 = caljson - ugetbr;

            return(Ok(res));
        }
        public IHttpActionResult Put(int id, [FromBody] People person)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            People personInDB = _context.Person.FirstOrDefault(d => d.Id == id);

            if (personInDB == null)
            {
                return(NotFound());
            }

            person = validator.CleanName(person);
            // log changes
            ChangesLogs log = new ChangesLogs();

            log.AddChangesLog(personInDB, person, new List <string>()
            {
                "TypeDocument", "Document", "Ext", "Names", "FirstSurName", "SecondSurName", "BirthDate", "Gender",
                "Nationality", "UseMariedSurName", "UseSecondSurName", "MariedSurName", "PhoneNumber", "PersonalEmail", "OfficePhoneNumber", "OfficePhoneNumberExt",
                "HomeAddress", "UcbEmail", "AFP", "NUA", "Insurance", "InsuranceNumber"
            });

            //--------------------------REQUIRED COLS--------------------------
            personInDB.TypeDocument     = cleanText(person.TypeDocument);
            personInDB.Document         = person.Document;
            personInDB.Ext              = cleanText(person.Ext);
            personInDB.Names            = cleanText(person.Names);
            personInDB.FirstSurName     = cleanText(person.FirstSurName);
            personInDB.SecondSurName    = cleanText(person.SecondSurName);
            personInDB.BirthDate        = person.BirthDate;
            personInDB.Gender           = cleanText(person.Gender);
            personInDB.Nationality      = cleanText(person.Nationality);
            personInDB.UseMariedSurName = (int)person.UseMariedSurName;
            personInDB.UseSecondSurName = person.UseSecondSurName;
            //------------------------NON REQUIRED COLS--------------------------
            personInDB.MariedSurName        = cleanText(person.MariedSurName);
            personInDB.PhoneNumber          = person.PhoneNumber;
            personInDB.PersonalEmail        = person.PersonalEmail;
            personInDB.OfficePhoneNumber    = person.OfficePhoneNumber;
            personInDB.OfficePhoneNumberExt = person.OfficePhoneNumberExt;
            personInDB.HomeAddress          = person.HomeAddress;
            personInDB.UcbEmail             = person.UcbEmail;
            personInDB.AFP             = cleanText(person.AFP);
            personInDB.NUA             = person.NUA;
            personInDB.Insurance       = person.Insurance;
            personInDB.InsuranceNumber = person.InsuranceNumber;
            //register updated time
            personInDB.UpdatedAt = DateTime.Now;



            var ADauth           = new ADClass();
            var usr              = auth.getUser(Request);
            var rols             = ADauth.getUserRols(usr);
            var canUpdatePending = false;

            foreach (var rol in rols)
            {
                if (rol.Name == "GPS Admin" || rol.Name == "Admin")
                {
                    canUpdatePending = true;
                    break;
                }
            }

            if (canUpdatePending)
            {
                personInDB.Pending = person.Pending;
            }
            _context.SaveChanges();
            return(Ok(personInDB));
        }
        public IHttpActionResult Get(int id, [FromUri] string by = "Id")
        {
            People personInDB = null;

            switch (by)
            {
            case "Id":
                personInDB = _context.Person.FirstOrDefault(d => d.Id == id);
                break;

            case "Contract":
                var con = _context.ContractDetails.Include(x => x.People).FirstOrDefault(d => d.Id == id);
                personInDB = con == null ? null : con.People;
                break;
            }


            if (personInDB == null)
            {
                return(NotFound());
            }
            var ADauth           = new ADClass();
            var usr              = auth.getUser(Request);
            var rols             = ADauth.getUserRols(usr);
            var canUpdatePending = false;

            foreach (var rol in rols)
            {
                if (rol.Name == "GPS Admin" || rol.Name == "Admin")
                {
                    canUpdatePending = true;
                    break;
                }
            }
            dynamic res = new JObject();

            res.Id               = personInDB.Id;
            res.CUNI             = personInDB.CUNI;
            res.Document         = personInDB.Document;
            res.TypeDocument     = personInDB.TypeDocument;
            res.Ext              = personInDB.Ext;
            res.FullName         = personInDB.GetFullName();
            res.FirstSurName     = personInDB.FirstSurName;
            res.SecondSurName    = personInDB.SecondSurName;
            res.Names            = personInDB.Names;
            res.MariedSurName    = personInDB.MariedSurName == null ? "" : personInDB.MariedSurName;
            res.UseMariedSurName = personInDB.UseMariedSurName;
            res.UseSecondSurName = personInDB.UseSecondSurName;
            res.Pending          = personInDB.Pending;
            res.canUpdatePending = personInDB.Pending && canUpdatePending;
            var c = personInDB.GetLastContract(_context, date: DateTime.Now);

            res.Contract            = c != null;
            res.ContractId          = c == null ? (dynamic)"" : c.Id;
            res.PositionsId         = c == null ? (dynamic)"" : c.Positions.Id;
            res.Positions           = c == null ? "" : c.Positions.Name;
            res.PositionDescription = c == null ? "" : c.PositionDescription;
            res.AI            = c == null ? false : c.AI;
            res.Dedication    = c == null ? "" : c.Dedication;
            res.Linkage       = c == null ? "" : c.Link.Value;
            res.DependencyId  = c == null ? (dynamic)"" : c.Dependency.Id;
            res.Dependency    = c == null ? "" : c.Dependency.Name;
            res.Branches      = c == null ? null : _context.Branch.FirstOrDefault(x => x.Id == c.Dependency.BranchesId).Name;
            res.StartDatestr  = c == null ? (dynamic)"" : c.StartDate.ToString("dd MMM yyyy", new CultureInfo("es-ES"));
            res.EndDatestr    = c == null ? (dynamic)"" : c.EndDate == null ? "" : c.EndDate.Value.ToString("dd MMM yyyy", new CultureInfo("es-ES"));
            res.StartDate     = c == null ? (dynamic)"" : c.StartDate.ToString("MM/dd/yyyy");
            res.EndDate       = c == null ? (dynamic)"" : c.EndDate == null ? "" : c.EndDate.Value.ToString("MM/dd/yyyy");
            res.Gender        = personInDB.Gender;
            res.BirthDatestr  = personInDB.BirthDate.ToString("dd MMM yyyy", new CultureInfo("es-ES"));
            res.BirthDate     = personInDB.BirthDate.ToString("MM/dd/yyyy");
            res.Nationality   = personInDB.Nationality;
            res.AFP           = personInDB.AFP;
            res.NUA           = personInDB.NUA;
            res.Insurance     = personInDB.Insurance;
            res.UcbEmail      = personInDB.UcbEmail;
            res.PersonalEmail = personInDB.PersonalEmail;
            res.Age           = DateTime.Now.Year - personInDB.BirthDate.Year;
            var u = _context.CustomUsers.FirstOrDefault(x => x.PeopleId == personInDB.Id);

            res.UserName = u == null ? "" : u.UserPrincipalName; return(Ok(res));
        }