public ActionResult DeleteSuperUser(string AD)
        {
            if (AnsattHelper.IsUserSuper(GetUsername()))
            {
                if (AD != null)
                {
                    if (GetUsername().ToUpper().Equals(AD.ToUpper()))
                    {
                        ViewBag.ErrorMsgGlobal = "Feil: Du kan ikke fjerne din egen superbrukertilgang";
                    }
                    else
                    {
                        var result = AnsattHelper.DeleteSuperUser(AD);
                        if (result.Success)
                        {
                            ViewBag.StatusMsgGlobal = result.Message;
                        }
                        else
                        {
                            ViewBag.ErrorMsgGlobal = result.Message;
                        }
                    }
                }
                else
                {
                    ViewBag.ErrorMsgGlobal = "Feil: Ugyldig parameter oppgitt. Prøv på nytt senere";
                }

                return(View("SuperBrukere"));
            }
            else
            {
                return(new HttpUnauthorizedResult());
            }
        }
        public ActionResult TriggerRandomException()
        {
            if (AnsattHelper.IsUserSuper(GetUsername()))
            {
                var rand = new Random().Next(4);

                switch (rand)
                {
                case 0:
                    throw new NotImplementedException("Ikke implementert");

                case 1:
                {
                    string kc = null;
                    kc += kc.ToString();
                    break;
                }

                case 2:
                    throw new DivideByZeroException("Du kan ikke dele på 0! You crazy!");

                case 3:
                    var z = "nope".Substring(3, 3);
                    break;
                }

                return(View(null + string.Empty));
            }
            else
            {
                return(new HttpUnauthorizedResult());
            }
        }
        private Response <bool> IsLoggedInUserEntitled(Bundles.AnsattInfo ansattInfo)
        {
            var loggedInUser = GetLoggedInUserAD();

            if (AnsattHelper.IsUserSuper(loggedInUser))
            {
                return(new Response <bool>(true, "User is testAdmin", Codes.Code.OK));
            }

            Bundles.LederInfo[] lederListe = ansattInfo.Lederliste;

            // sjekk om det ble funnet ledere i AD, hvis ikke hent fra HRM
            if (lederListe == null || lederListe.Length <= 0)
            {
                var lederResponse = HRMHelper.FinnLedereForAnsatt(ansattInfo.Fornavn, ansattInfo.Etternavn, ansattInfo.AnsattNr);

                if (lederResponse.Success)
                {
                    lederListe = lederResponse.Get();
                }
            }

            // sjekk om innlogget bruker står som leder for den ansatte
            foreach (var leder in lederListe)
            {
                if (leder.AD.ToUpper().Equals(loggedInUser))
                {
                    return(new Response <bool>(true, "OK", Codes.Code.OK));
                }
            }

            // sjekk om innlogget bruker er leders leder
            foreach (var leder in lederListe)
            {
                var lederResult = ADHelper.GetAnsattInfoForLeder(leder.AD);

                if (lederResult.Success)
                {
                    var ledersLedere = HRMHelper.FinnLedereForAnsatt(lederResult.Get());

                    if (ledersLedere.Success)
                    {
                        foreach (var ledersLeder in ledersLedere.Get())
                        {
                            if (ledersLeder.AD.ToUpper().Equals(loggedInUser))
                            {
                                return(new Response <bool>(true, "OK", Codes.Code.OK));
                            }
                        }
                    }
                }
                else
                {
                    return(new Response <bool>(false, lederResult.Message, Codes.Code.ERROR));
                }
            }

            return(new Response <bool>(false, "Du står ikke som leder for denne ansatte", Codes.Code.ERROR));
        }
 public ActionResult Raadmenn()
 {
     if (AnsattHelper.IsUserSuper(GetUsername()))
     {
         ViewBag.HelpLink = HelpLinks.RaadmennTilgang;
         return(View());
     }
     else
     {
         return(new HttpUnauthorizedResult());
     }
 }
 public ActionResult SuperBrukere()
 {
     if (AnsattHelper.IsUserSuper(GetUsername()))
     {
         ViewBag.HelpLink = HelpLinks.SuperBrukere;
         return(View());
     }
     else
     {
         return(new HttpUnauthorizedResult());
     }
 }
 public ActionResult ResetEsignPoll()
 {
     if (AnsattHelper.IsUserSuper(GetUsername()))
     {
         //var result = ESignPoller.Init();
         //ViewBag.StatusMsgGlobal = result.Message;
         return(View("Index"));
     }
     else
     {
         return(new HttpUnauthorizedResult());
     }
 }
 public ActionResult StartESignPoll()
 {
     if (AnsattHelper.IsUserSuper(GetUsername()))
     {
         ESignPollerNew.PollForChange();
         ViewBag.StatusMsgGlobal = "Kjører PollForChange()...";
         return(View("Index"));
     }
     else
     {
         return(new HttpUnauthorizedResult());
     }
 }
        public ActionResult ViewLog()
        {
            if (AnsattHelper.IsUserSuper(GetUsername()))
            {
                var dokument = RouteData.Values["docID"];

                return(View());
            }
            else
            {
                return(new HttpUnauthorizedResult());
            }
        }
        public ActionResult IdentifiserAnsatt()
        {
            // vis innlogget bruker i headeren

            var dokument = RouteData.Values["docID"];

            if (dokument == null)
            {
                dokument = Session["docID"];
            }

            ViewBag.Message        = $"Logget inn som {User.Identity.Name}";
            ViewBag.ErrorMsgGlobal = TempData["ErrorMsgGlobal"];
            ViewBag.ErrorMsg       = TempData["errorMsg"];
            ViewBag.StatusCode     = TempData["statusCode"];
            ViewBag.Ansattnr       = TempData["ansattNr"];

            if (dokument.Equals("Sykefraværsmappe"))
            {
                ViewBag.TitleHint = "Identifisering av ansatt";
                ViewBag.MainHint  = "Vennligst identifiser den ansatte for å dokumentere sykefravær...";
                ViewBag.CanSkip   = false;
            }
            else
            {
                ViewBag.TitleHint = "Identifisering av ansatt";
                ViewBag.MainHint  = "Vennligst identifiser den ansatte for å laste opp dokumenter...";
                ViewBag.CanSkip   = true;
            }

            ViewBag.DocID    = dokument;
            Session["docID"] = dokument;

            var isUserSuper = AnsattHelper.IsUserSuper(GetLoggedInUserAD());

            ViewBag.CanSeeTestUsers = isUserSuper;

            if (isUserSuper)
            {
                ViewBag.TestUsers = AnsattHelper.Testbrukere;
            }

            ViewBag.HelpLink = HelpLinks.Startside;

            return(View());
        }
        private ActionResult Success(Bundles.AnsattInfo ansatt)
        {
            // ---------------
            var isUserSuper = AnsattHelper.IsUserSuper(GetLoggedInUserAD());

            ViewBag.CanSeeTestUsers = isUserSuper;

            if (isUserSuper)
            {
                ViewBag.TestUsers = AnsattHelper.Testbrukere;
            }
            // --------------------

            ViewBag.HelpLink   = HelpLinks.Startside;
            ViewBag.Ansattnavn = ansatt.Navn;
            ViewBag.Ansattnr   = ansatt.AnsattNr;
            Session["ansatt"]  = ansatt;
            return(View("VelgDokument"));
        }
        public ActionResult DeleteRaadmann(string ad)
        {
            if (AnsattHelper.IsUserSuper(GetUsername()))
            {
                var result = AnsattHelper.DeleteRaadmann(ad);
                if (result.Success)
                {
                    ViewBag.StatusMsgGlobal = result.Message;
                }
                else
                {
                    ViewBag.ErrorMsgGlobal = result.Message;
                }

                return(View("Raadmenn"));
            }
            else
            {
                return(new HttpUnauthorizedResult());
            }
        }
        public ActionResult AddSuperUser(string ADbrukernavn)
        {
            if (AnsattHelper.IsUserSuper(GetUsername()))
            {
                var result = AnsattHelper.AddSuperUser(ADbrukernavn);

                if (result.Success)
                {
                    ViewBag.StatusMsgGlobal = result.Message;
                }
                else
                {
                    ViewBag.ErrorMsgGlobal = result.Message;
                }

                return(View("SuperBrukere"));
            }
            else
            {
                return(new HttpUnauthorizedResult());
            }
        }
        public ActionResult CreateTestUser(string id, string fornavn, string etternavn)
        {
            if (AnsattHelper.IsUserSuper(GetUsername()))
            {
                var result = AnsattHelper.AddTestUser(id, fornavn, etternavn);

                if (result.Success)
                {
                    ViewBag.StatusMsgGlobal = result.Message;
                }
                else
                {
                    ViewBag.ErrorMsgGlobal = result.Message;
                }

                return(View("TestBrukere"));
            }
            else
            {
                return(new HttpUnauthorizedResult());
            }
        }
        public ActionResult UpdateSuperUsers(bool[] updateADBruker)
        {
            if (AnsattHelper.IsUserSuper(GetUsername()))
            {
                if (updateADBruker.Length == AnsattHelper.Superbrukere.Count)
                {
                    for (int i = 0; i < updateADBruker.Length; i++)
                    {
                        var nb = AnsattHelper.Superbrukere[i];
                        if (nb.MottaFeilmeldinger != updateADBruker[i])
                        {
                            nb.MottaFeilmeldinger = updateADBruker[i];
                            var result = AnsattHelper.ModifySuperUser(nb);
                            if (!result.Success)
                            {
                                ViewBag.ErrorMsgGlobal = result.Message;
                                return(View("SuperBrukere"));
                            }
                        }
                    }

                    ViewBag.StatusMsgGlobal = "Superbrukere oppdatert!";
                }
                else
                {
                    ViewBag.ErrorMsgGlobal = "En feil har oppstått: feil med antall superbrukere kontra mottat data fra post";
                    return(View("SuperBrukere"));
                }

                return(View("SuperBrukere"));
            }
            else
            {
                return(new HttpUnauthorizedResult());
            }
        }
        public ActionResult VelgDokument(string identifikator)
        {
            ViewBag.Message = $"Logget inn som {User.Identity.Name}";
            Response <Bundles.AnsattInfo> ansattResponse;

            ViewBag.DocID = Session["docID"];

            if (identifikator.Equals("-1"))
            {
                ViewBag.Ansattnr = identifikator;
                ansattResponse   = new Response <Bundles.AnsattInfo>(Bundles.AnsattInfo.Skipped, null, Codes.Code.OK);
                return(Success(ansattResponse.Get()));
            }
            else if (identifikator.StartsWith("!") && AnsattHelper.IsUserSuper(GetLoggedInUserAD()))
            {
                // testbrukere
                var ansattnr = identifikator.Substring(1, identifikator.Length - 1);
                ansattResponse   = AnsattHelper.GetTestUser(ansattnr, GetLoggedInUserAD());
                ViewBag.Ansattnr = ansattnr;
            }
            else if (identifikator.Contains("@")) // anta e-postadresse
            {
                ansattResponse = ADHelper.GetADBrukerForEpost(identifikator);
            }
            else if (long.TryParse(identifikator, out long idNummer)) // et nummer - altså ansattnr. eller personnr.
            {
                if (idNummer > 99999)
                {
                    ansattResponse = HRMHelper.FinnAnsatt(identifikator);
                }
                else
                {
                    ansattResponse = ADHelper.GetADBruker((int)idNummer);
                }
            }
            else
            {
                return(Failure(Codes.Code.ERROR, $"Ugyldig identifikator oppgitt: '{identifikator}'"));
            }

            if (ansattResponse.Success)
            {
                var ansatt     = ansattResponse.Get();
                var authResult = IsLoggedInUserEntitled(ansatt);
                if (authResult.Get())
                {
                    return(Success(ansatt));
                }
                else
                {
                    // Gjør oppslag i HRM for å finne alle ledere for denne ansatte
                    var lederResponse = HRMHelper.FinnLedereForAnsatt(ansatt.Fornavn, ansatt.Etternavn, ansatt.AnsattNr);

                    if (lederResponse.Success)
                    {
                        ansatt.Lederliste = lederResponse.Get();

                        authResult = IsLoggedInUserEntitled(ansatt);
                        if (authResult.Success)
                        {
                            if (authResult.Get())
                            {
                                return(Success(ansatt));
                            }
                            else
                            {
                                return(Failure(authResult.Code, authResult.Message));
                            }
                        }
                        else
                        {
                            return(Failure(authResult.Code, authResult.Message));
                        }
                    }
                    else
                    {
                        return(Failure(authResult.Code, authResult.Message));
                    }
                }
            }
            else
            {
                return(Failure(ansattResponse.Code, ansattResponse.Message));
            }
        }