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());
            }
        }
        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());
            }
        }
        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 StatusLogger()
        {
            if (AnsattHelper.IsUserRaadmann(GetUsername()))
            {
                StatHelper.Init();

                var data = StatHelper.GetData();

                //var sykefraværData = data.Where(l => l.Type == Mappetype.Sykefravær);
                var ansattforholdData = data.Where(l => l.Type == Mappetype.Ansattforhold);
                var currentDayList    = StatHelper.GetUploadsToday();

                ViewBag.CurrentDayCount    = currentDayList.Count();
                ViewBag.SykefraværCount    = currentDayList.Where(l => l.Type == Mappetype.Sykefravær).Count();
                ViewBag.AnsattforholdCount = currentDayList.Where(l => l.Type == Mappetype.Ansattforhold).Count();

                var varselDataResult = StatHelper.GetVarselLogg();
                var uploadDataResult = StatHelper.GetOppfølginger();

                if (varselDataResult.Success && uploadDataResult.Success)
                {
                    var varselData = varselDataResult.Get();
                    var uploadData = uploadDataResult.Get();
                    ViewBag.Dag5Count  = varselData.Where(v => v.Name.Equals(StringConstants.Varsel.GetVarsel(5))).Count();
                    ViewBag.Dag14Count = varselData.Where(v => v.Name.Equals(StringConstants.Varsel.GetVarsel(14))).Count();
                    ViewBag.Dag28Count = varselData.Where(v => v.Name.Equals(StringConstants.Varsel.GetVarsel(28))).Count();

                    ViewBag.DateMod = varselDataResult.Message;

                    ViewBag.TodayCount = varselData.Where(v => v.Date.Equals(DateTime.Now.ToString("dd.MM.yyy"))).Count();

                    // tell opp sendte varsler pr. dag for å tegne graf
                    var currentDate   = DateTime.Now;
                    var jsVarselArray = "["; // lag en array som javascript can bruke
                    var jsUploadArray = "[";
                    for (int i = 0; i < 28; i++)
                    {
                        jsVarselArray += varselData.Where(v => v.Date.Equals(currentDate.AddDays(-i).ToString("dd.MM.yyy"))).Count() + ", ";
                        jsUploadArray += uploadData.Where(l => l.Date.Equals(currentDate.AddDays(-i).ToString("dd.MM.yyy"))).Count() + ", ";
                    }


                    var ledere = varselData.GroupBy(v => v.User).Select(grp => grp.ToList()).ToList();

                    // tell opp antall utførte/aktive varsler pr nærmeste leder
                    var lederVarsler = new List <VarselLeder>();
                    foreach (var grpLeder in ledere)
                    {
                        var currentLederList = varselData.Where(v => v.User.Equals(grpLeder.First().User));
                        var d5  = currentLederList.Where(v => v.Name.Equals(StringConstants.Varsel.GetVarsel(5)));
                        var d14 = currentLederList.Where(v => v.Name.Equals(StringConstants.Varsel.GetVarsel(14)));
                        var d28 = currentLederList.Where(v => v.Name.Equals(StringConstants.Varsel.GetVarsel(28)));

                        var utførtD5  = d5.Where(v => v.Status.Equals("Utført"));
                        var utførtD14 = d14.Where(v => v.Status.Equals("Utført"));
                        var utførtD28 = d28.Where(v => v.Status.Equals("Utført"));

                        var vl = new VarselLeder(grpLeder.First().User, $"{utførtD5.Count()}/{d5.Count()}", $"{utførtD14.Count()}/{d14.Count()}", $"{utførtD28.Count()}/{d28.Count()}");

                        // regn ut % utført av alle varsler
                        double su = utførtD5.Count() + utførtD14.Count() + utførtD28.Count();
                        double st = d5.Count() + d14.Count() + d28.Count();
                        if (st > 0)
                        {
                            var pc = su / st;
                            vl.PS = Math.Round(pc * 100);
                        }

                        lederVarsler.Add(vl);
                    }

                    jsVarselArray      += "]";
                    jsUploadArray      += "]";
                    ViewBag.VarselArray = jsVarselArray;
                    ViewBag.UploadArray = jsUploadArray;

                    ViewBag.LederVarsler = lederVarsler;
                }
                else if (!varselDataResult.Success)
                {
                    ViewBag.msgVarselFeil = varselDataResult.Message;
                }
                else
                {
                    ViewBag.msgVarselFeil = uploadDataResult.Message;
                }
                ViewBag.HelpLink = HelpLinks.StatusLogger;
                return(View());
            }
            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));
            }
        }