public ActionResult TestByeah() { var ansatt = ADHelper.GetADBruker(20235).Get(); HRMHelper.HentAnsattStillingsInfo(ansatt, GetUsername()); return(View("Index")); }
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 Notat() { var dokument = RouteData.Values["docID"]; if (dokument != null) { var lederResult = ADHelper.GetLederBundle(GetLoggedInUserAD()); if (lederResult.Success) { var leder = lederResult.Get(); ViewBag.Ledernavn = leder.Navn; Bundles.AnsattInfo ansatt = GetAnsattFromSession(); if (!ansatt.Equals(Bundles.AnsattInfo.Empty)) { ViewBag.Ansattnavn = ansatt.Navn; ViewBag.Ansattnr = ansatt.AnsattNr; ViewBag.Date = DateTime.Now.ToString("dd'/'MM yyyy"); if (dokument.Equals(Dokumenter.Dag1)) { // logg besøkende på de ulike dagene for sikkerhets skyld #if !DEBUG System.IO.File.AppendAllText(@"C:\inetpub\logs\visitors.txt", DateTime.Now.ToString() + ": " + GetLoggedInUserAD() + ": " + dokument + "\n"); #endif ViewBag.HelpLink = HelpLinks.Sykefravær; return(MakeNoteEditor( "Sykefraværsoppfølging dag 1", Datotype.Opplastingsdato, $"Her kan du skrive inn notat for dag 1 vedrørende {ansatt.Navn} direkte. Teksten blir lagret som pdf-fil på sikkert område når du trykker 'Send inn', " + $"før den blir arkivert i WebSak av roboten.", "Tips: Trykk på 'Fyll ut' for å få ferdig utfylt spørsmålstekst i dokumentet.", $"<font size='5'>Sykefraværsoppfølging dag 1 - {GetFormattedDate()}</font><blockquote></blockquote>", Mappetype.Sykefravær, Maltekst.HentMalTekst("Dag1-5") )); } else if (dokument.Equals(Dokumenter.Dag5)) { // logg besøkende på de ulike dagene for sikkerhets skyld #if !DEBUG System.IO.File.AppendAllText(@"C:\inetpub\logs\visitors.txt", DateTime.Now.ToString() + ": " + GetLoggedInUserAD() + ": " + dokument + "\n"); #endif ViewBag.HelpLink = HelpLinks.Sykefravær; return(MakeNoteEditor( "Sykefraværsoppfølging dag 5", Datotype.Opplastingsdato, $"Her kan du skrive inn notat for dag 5 vedrørende {ansatt.Navn} direkte. Teksten blir lagret som pdf-fil på sikkert område når du trykker 'Send inn', " + $"før den blir arkivert i WebSak av roboten.", "Tips: Trykk på 'Fyll ut' for å få ferdig utfylt spørsmålstekst i dokumentet.", $"<font size='5'>Sykefraværsoppfølging dag 5 - {GetFormattedDate()}</font><blockquote></blockquote>", Mappetype.Sykefravær, Maltekst.HentMalTekst("Dag1-5") )); } else if (dokument.Equals(Dokumenter.Dag14)) { // logg besøkende på de ulike dagene for sikkerhets skyld #if !DEBUG System.IO.File.AppendAllText(@"C:\inetpub\logs\visitors.txt", DateTime.Now.ToString() + ": " + GetLoggedInUserAD() + ": " + dokument + "\n"); #endif ViewBag.HelpLink = HelpLinks.Sykefravær; return(MakeNoteEditor( "Sykefraværsoppfølging dag 14", Datotype.Opplastingsdato, $"Her kan du skrive inn notat for dag 14 vedrørende {ansatt.Navn} direkte. Teksten blir lagret som pdf-fil på sikkert område når du trykker 'Send inn', " + $"før den blir arkivert i WebSak av roboten.", "Tips: Trykk på 'Fyll ut' for å få ferdig utfylt spørsmålstekst i dokumentet.", $"<font size='5'>Sykefraværsoppfølging dag 14 - {GetFormattedDate()}</font><blockquote></blockquote>", Mappetype.Sykefravær, Maltekst.HentMalTekst("Dag14") )); } else if (dokument.Equals(Dokumenter.Dag28)) { // logg besøkende på de ulike dagene for sikkerhets skyld #if !DEBUG System.IO.File.AppendAllText(@"C:\inetpub\logs\visitors.txt", DateTime.Now.ToString() + ": " + GetLoggedInUserAD() + ": " + dokument + "\n"); #endif ViewBag.HelpLink = HelpLinks.Sykefravær; return(MakeNoteEditor( "Sykefraværsoppfølging dag 28", Datotype.Opplastingsdato, $"Her kan du skrive inn notat for dag 28 og laste opp en oppfølgingsplan for {ansatt.Navn}. Teksten blir lagret som pdf-fil på sikkert område når du trykker 'Send inn', " + $"før den blir arkivert i WebSak av roboten.", "Tips: Trykk på 'Fyll ut' for å få ferdig utfylt spørsmålstekst i dokumentet.", $"<font size='5'>Sykefraværsoppfølging dag 28 - {GetFormattedDate()}</font><blockquote></blockquote>", Mappetype.Sykefravær, Maltekst.HentMalTekst("Dag28") )); } else if (dokument.Equals(Dokumenter.Dialogmøte1)) { // logg besøkende på de ulike dagene for sikkerhets skyld #if !DEBUG System.IO.File.AppendAllText(@"C:\inetpub\logs\visitors.txt", DateTime.Now.ToString() + ": " + GetLoggedInUserAD() + ": " + dokument + "\n"); #endif ViewBag.HelpLink = HelpLinks.Sykefravær; return(MakeNoteEditor( "Sykefraværsoppfølging Dialogmøte 1", Datotype.Opplastingsdato, $"Her kan du skrive inn referat fra dialogmøte 1 vedrørende {ansatt.Navn} direkte. Teksten blir lagret som pdf-fil på sikkert" + " område når du trykker 'Send inn', før den blir arkivert i WebSak av roboten.", "", $"<font size='5'>Sykefraværsoppfølging Dialogmøte 1 - {GetFormattedDate()}</font><blockquote></blockquote>", Mappetype.Sykefravær )); } else if (dokument.Equals(Dokumenter.Dialogmøte2)) { // logg besøkende på de ulike dagene for sikkerhets skyld #if !DEBUG System.IO.File.AppendAllText(@"C:\inetpub\logs\visitors.txt", DateTime.Now.ToString() + ": " + GetLoggedInUserAD() + ": " + dokument + "\n"); #endif ViewBag.HelpLink = HelpLinks.Sykefravær; return(MakeNoteEditor( "Sykefraværsoppfølging Dialogmøte 2", Datotype.Opplastingsdato, $"Her kan du skrive inn referat fra dialogmøte 2 vedrørende {ansatt.Navn} direkte. Teksten blir lagret som pdf-fil på sikkert" + " område når du trykker 'Send inn', før den blir arkivert i WebSak av roboten.", "", $"<font size='5'>Sykefraværsoppfølging Dialogmøte 2 - {GetFormattedDate()}</font><blockquote></blockquote>", Mappetype.Sykefravær )); } else if (dokument.Equals(Dokumenter.Dialogmøte3)) { // logg besøkende på de ulike dagene for sikkerhets skyld #if !DEBUG System.IO.File.AppendAllText(@"C:\inetpub\logs\visitors.txt", DateTime.Now.ToString() + ": " + GetLoggedInUserAD() + ": " + dokument + "\n"); #endif ViewBag.HelpLink = HelpLinks.Sykefravær; return(MakeNoteEditor( "Sykefraværsoppfølging Dialogmøte 3", Datotype.Opplastingsdato, $"Her kan du skrive inn referat fra dialogmøte 3 vedrørende {ansatt.Navn} direkte. Teksten blir lagret som pdf-fil på sikkert" + " område når du trykker 'Send inn', før den blir arkivert i WebSak av roboten.", "", $"<font size='5'>Sykefraværsoppfølging Dialogmøte 3 - {GetFormattedDate()}</font><blockquote></blockquote>", Mappetype.Sykefravær )); } else if (dokument.Equals(Dokumenter.GenereltFraværsnotat)) { // logg besøkende på de ulike dagene for sikkerhets skyld #if !DEBUG System.IO.File.AppendAllText(@"C:\inetpub\logs\visitors.txt", DateTime.Now.ToString() + ": " + GetLoggedInUserAD() + ": " + dokument + "\n"); #endif ViewBag.HelpLink = HelpLinks.Sykefravær; return(MakeNoteEditor( "Generelt fraværsnotat/Tilretteleggingssamtale", Datotype.Opplastingsdato, $"Her kan du skrive generelle notater relatert til fravær for {ansatt.Navn}. Teksten blir lagret som pdf-fil på sikkert" + " område når du trykker 'Send inn', før den blir arkivert i WebSak av roboten.", "", $"<font size='5'>Generelt fraværsnotat/Tilretteleggingssamtale - {GetFormattedDate()}</font><blockquote></blockquote>", Mappetype.Sykefravær )); } else if (dokument.Equals(Dokumenter.GenereltDokument)) { string mappetype = (string)Session["docID"]; int docId = "Sykefraværsmappe".Equals(mappetype) ? Mappetype.Sykefravær : Mappetype.Ansattforhold; MakeFileUploader("", "Generelle dokumenter", $"Her kan du laste opp generelle dokumenter for {ansatt.Navn} ({mappetype}).", Dokumenter.GenereltDokument, docId); return(View("GenereltDokument")); } else if (dokument.Equals(Dokumenter.MøteinnkallingOppfølgingssamtale)) { // logg besøkende på de ulike dagene for sikkerhets skyld #if !DEBUG System.IO.File.AppendAllText(@"C:\inetpub\logs\visitors.txt", DateTime.Now.ToString() + ": " + GetLoggedInUserAD() + ": " + dokument + "\n"); #endif ViewBag.HelpLink = HelpLinks.Sykefravær; ViewBag.Heading = $"Her kan du skrive møteinnkalling til oppfølgingssamtale for {ansatt.Navn}. Møteinnkallingen sendes" + " via elektronisk post til den ansatte hvis de har digital postkasse, hvis ikke sendes den som brev i posten."; ViewBag.AutocompleteText = Maltekst.HentMalTekst("Møteinnkalling"); return(View("Moteinnkalling")); } else if (dokument.Equals(Dokumenter.GenereltUtgåendeDokument)) { string mappetype = (string)Session["docID"]; int docId = "Sykefraværsmappe".Equals(mappetype) ? Mappetype.Sykefravær : Mappetype.Ansattforhold; ViewBag.DocId = docId; ViewBag.Heading = $"Her kan du skrive utgående brev til {ansatt.Navn}. Brevet sendes" + " via elektronisk post til den ansatte hvis de har digital postkasse, hvis ikke sendes det som brev i posten."; return(View("GenereltUtgaendeDokument")); } else if (dokument.Equals(Dokumenter.DigitalArbeidskontrakt)) { ViewBag.HelpLink = HelpLinks.Arbeidskontrakt; return(MakeFileUploader( "Arbeidskontrakt", $"Du laster nå opp dokumenter vedrørende {ansatt.Navn} på mappe Ansattforhold i WebSak.", "Har du sendt en arbeidsavtale til e-signering? <a href='https://signering.posten.no/virksomhet/#/' target='_blank'>Last den ned her</a>", "digital arbeidskontrakt", Mappetype.Ansattforhold )); } else if (dokument.Equals(Dokumenter.Permisjonssøknad)) { return(MakeFileUploader( "Permisjonssøknad", $"Du laster nå opp dokumenter vedrørende {ansatt.Navn} på mappe Ansattforhold i WebSak.", "Permisjonssøknader over 2 uker skal arkiveres i personalmappen.", "permisjonssøknad", Mappetype.Ansattforhold )); } else if (dokument.Equals(Dokumenter.Utviklingssamtale)) { ViewBag.HelpLink = HelpLinks.Utviklingssamtale; return(MakeNoteEditor( "Utviklings-/medarbeidersamtale", Datotype.Opplastingsdato, $"Her kan du skrive inn utviklings-/medarbeidersamtale for {ansatt.Navn} direkte. Teksten blir lagret som pdf-fil på sikkert" + " område når du trykker 'Send inn', før den blir arkivert i WebSak av roboten.", "", $"<font size='5'>Utviklings-/medarbeidersamtale - {GetFormattedDate()}</font><blockquote></blockquote>", Mappetype.Ansattforhold )); } else if (dokument.Equals(Dokumenter.Arbeidsattest)) { ViewBag.HelpLink = HelpLinks.Arbeidsattest; return(MakeNoteEditor( "Arbeidsattest", Datotype.Opplastingsdato, $"Her kan du skrive arbeidsattest for {ansatt.Navn}. Arbeidstaker som fratrer etter lovlig oppsigelse har krav på skriftlig attest av arbeidsgiver. " + $"Attesten skal inneholde opplysninger om arbeidstakers navn, fødselsdato, hva arbeidet har bestått i og om arbeidsforholdets varighet " + $"<a href='http://arbeidsmiljoloven.com/article/%C2%A7-15-15-attest/' target='_blank'>(se mer informasjon)</a>.<br/>" + $"Attesten blir arkivert i WebSak og sendt som digitalt brev med logo til den ansatte når du trykker 'Send inn'.", "", string.Format(Maltekst.HentMalTekst("Arbeidsattest"), ansatt.Navn), Mappetype.Ansattforhold, null, true )); } else if (dokument.Equals(Dokumenter.PolitiattestFormål)) { ViewBag.HelpLink = HelpLinks.VedleggPolitiattest; ViewBag.LovhjemmelListe = PolitiattestFactory.LovhjemmelListe; ViewBag.Ansattfornavn = ansatt.Fornavn; ViewBag.Ansattetternavn = ansatt.Etternavn; return(View("PolitiattestFormaal")); } else if (dokument.Equals(Dokumenter.Anvisningsfullmakt)) { return(View("Anvisningsfullmakt")); } else if (dokument.Equals(Dokumenter.TilbaketrekkingAnvisningsfullmakt)) { return(View("TilbaketrekkingAnvisningsfullmakt")); } else if (dokument.Equals(Dokumenter.FremlagtPolitiattest)) { return(MakeNoteEditor( "Fremlagt politiattest", Datotype.Opplastingsdato, $"Fyll ut stillingstittel markert med <b>fet</b> tekst i editoren under." + " Roboten noterer i personalmappen at du bekrefter at politiattesten er mottatt, vurdert og makulert. For mer informasjon, se egen" + "<a href='https://kvalitet.kommuneforlaget.no/kvalitetsstyring#/documents/e04344b1-7aa4-4764-89b4-0d1e1b4788e1/80f68daf-0eb9-4610-97fb-a2925946dd5b' target='_blank'>" + " rutine</a> for politiattest.", "NB: merknad vedr. ansettelse jf. barnevernloven: politiattest skal ikke makuleres jf. forskrift om politiattest i henhold til barnevernloven §8", string.Format(Maltekst.HentMalTekst("FremlagtPolitiattest"), GetFormattedDate(), ansatt.Navn, leder.Navn), Mappetype.Ansattforhold )); } else if (dokument.Equals(Dokumenter.Esignering)) { ViewBag.HelpLink = HelpLinks.Esignering; return(View("E-signering")); } else if (dokument.Equals(Dokumenter.ArbeidsavtaleNyeNarvik)) { ViewBag.Navn = ansatt.Navn; var infoResult = HRMHelper.HentAnsattStillingsInfo(ansatt, GetLoggedInUserAD()); if (infoResult.Success) { var sID = Request.QueryString["stillingID"]; if (infoResult.Get().Count == 1 || sID != null) { AvtaleInfo aInfo; if (sID != null) { aInfo = infoResult.Get()[int.Parse(sID)]; } else { aInfo = infoResult.Get()[0]; } ViewBag.Navn = aInfo.Navn; ViewBag.Personnr = aInfo.Personnr; ViewBag.Arbeidssted = aInfo.Arbeidssted; ViewBag.TittelStilling = aInfo.TittelStilling; ViewBag.Prosent = aInfo.Prosent; ViewBag.Lonn = aInfo.Lonn; ViewBag.TimerPrUke = aInfo.TimerPrUke; ViewBag.Fast = aInfo.ErFastStilling(); if (!aInfo.ErFastStilling()) { var aInfoMid = (AvtaleInfoMidlertidlig)aInfo; ViewBag.Hjemmel = aInfoMid.Hjemmel; ViewBag.Sluttdato = aInfoMid.Sluttdato; } return(View("ArbeidsavtaleNyeNarvik")); } else { // må håndtere flere stillinger på samme leder ViewBag.StillingListe = infoResult.Get(); return(View("VelgStilling")); } } return(View("ArbeidsavtaleNyeNarvik")); } else { TempData["ErrorMsgGlobal"] = dokument + " er ikke tilgjengelig"; return(RedirectToAction("VelgDokument", "Home")); } } else { TempData["ErrorMsgGlobal"] = "Du må velge en ansatt for å bruke denne funksjonen"; return(RedirectToAction("Index", "Home")); } } else { return(new HttpUnauthorizedResult()); } } else { TempData["ErrorMsgGlobal"] = "Velg et dokument fra menyen under"; return(RedirectToAction("VelgDokument", "Home")); } }
// lagrer alle opplastede filer til disk (G:\), oppretter hjelpefiler og returnerer mappeadressen private Response <string> SaveFilesToDisk(HttpPostedFileBase hoveddokument, IEnumerable <HttpPostedFileBase> vedlegg, string hovedfilnavn, string journalpostnavn, int sak = 0, bool sendCopy = false, Dictionary <string, string> helperFiles = null) { sak = sak >= _websakMapper.Length || sak < 0 ? 0 : sak; // sett mimetype avhengig av hvilken fil som skal lagres var allowedMime = sendCopy ? "text/html" : "application/pdf"; var fileExtension = ""; if (hovedfilnavn.Equals(Dokumenter.GenereltDokument)) { fileExtension = "." + hoveddokument.FileName.Split('.').Last(); } else { fileExtension = sendCopy ? ".html" : ".pdf"; } var ansatt = GetAnsattFromSession(); try { // sjekk filtypen if (hoveddokument.ContentType.Equals(allowedMime) || hovedfilnavn.Equals(Dokumenter.GenereltDokument)) { // bruker impersonate for å få skrivetilgang på G:\ for asp.net-prosessen Imposter.ImpersonateRobot(); // gjør klar diverse filnavn hovedfilnavn = hovedfilnavn.Replace(" ", "_"); var mappenavn = CreateUniqueFoldername(); var opplastingsmappe = $"{Paths.UNC_ADDRESS}{Paths.INPUT_FOLDER}{Paths.UPLOAD_FOLDER}{mappenavn}\\"; // asp.net-prosessen vil ha adressen på formen \\server\user$ var mappenavnForUiPath = $"{Paths.DRIVE_LETTER}{Paths.INPUT_FOLDER}{Paths.UPLOAD_FOLDER}{mappenavn}\\"; // UiPath vil ha adressen på formen G:\mappe // opprett en ny mappe for dokumentene til denne journalposten Directory.CreateDirectory(opplastingsmappe); // gi hoveddokumentet et standard navn slik at det kan finnes av roboten i WebSak var hovedfiladresse = $"{opplastingsmappe}{hovedfilnavn}{fileExtension}"; hoveddokument.SaveAs(hovedfiladresse); var filListe = ""; if (!sendCopy) { filListe += $"{mappenavnForUiPath}{hovedfilnavn}{fileExtension}"; // html-dokumentet skal ikke importeres i WebSak } var vedleggteller = 0; // lagre alle vedlegg hvis de eksisterer if (vedlegg != null) { foreach (var fil in vedlegg) { if (fil != null) { // lager filnavn som brukes av roboten når den skal importere i WebSak. Legger til "vedlegg_" for å unngå navnekonflikt med hovedfil/vedlegg var vedleggAdresse = opplastingsmappe + Path.GetFileName("vedlegg_" + fil.FileName); var hjelpefiladresse = mappenavnForUiPath + Path.GetFileName("vedlegg_" + fil.FileName); fil.SaveAs(vedleggAdresse); Debug.WriteLine(fil.FileName); filListe += System.Environment.NewLine + hjelpefiladresse; vedleggteller++; } } } // loggfør valgt dokument for statistikk var basePath = Paths.UNC_ADDRESS + Paths.PORTAL_LOG; if (sak == Mappetype.Sykefravær) { basePath += $@"Sykefravær\"; } else if (sak == Mappetype.Ansattforhold) { basePath += $@"Ansattforhold\"; } var logContent = $"{journalpostnavn}{System.Environment.NewLine}"; System.IO.File.AppendAllText(basePath + $"{DateTime.Now.ToString("dd.MM.yyyy")}.txt", logContent); // opprett hjelpfiler for robot System.IO.File.WriteAllText($"{opplastingsmappe}{HelperFile.FILE_LIST}", filListe); var lederInfoResult = ADHelper.GetLederBundle(GetUsername()); if (lederInfoResult.Success) { var hrmLederInfo = lederInfoResult.Get(); var websakLederInfo = HardCodeDB.TryCorrect(hrmLederInfo); // må håndtere avvik mellom navn i WebSak og HRM SaveFile(HelperFile.MANAGER_AD, websakLederInfo.AD); SaveFile(HelperFile.DEPARTMENT, websakLederInfo.Enhet); // enhet for å sette riktig saksbehandler i WebSak //-------------------------------------// SaveFile(HelperFile.MANAGER_EMAIL, hrmLederInfo.EPost); // e-postadresse til leder for evt. e-postvarsel fra robot (den som laster opp) SaveFile(HelperFile.FOLDER_TYPE, _websakMapper[sak]); // hvilken sakstype roboten skal opprette under 'Ny sak' i WebSak SaveFile(HelperFile.DATE, DateTime.Now.ToString("dd/MM/yyyy")); // dato dokumentet ble lastet opp SaveFile(HelperFile.POST_NAME, journalpostnavn); // prøv å finne ansattinfo i HRM-databasen slik at roboten slipper å åpne HRM-programmet // sparer tid og er mer stabilt var personnrResult = HRMHelper.FinnPersonnrForAnsatt(ansatt); if (personnrResult.Success) { SaveFile(HelperFile.EMPLOYEE_NAME, $"{ansatt.Etternavn} {ansatt.Fornavn}"); SaveFile(HelperFile.SSIN, personnrResult.Get()); SaveFile(HelperFile.EMPLOYEE_ID, ansatt.AnsattNr); } else { SaveFile(HelperFile.EMPLOYEE_ID, ansatt.AnsattNr); SaveFile(HelperFile.HRM_ERROR, personnrResult.Message); // lagre feilmelding i egen fil } if (sendCopy) { SaveFile(HelperFile.SVARUT, "NULL"); } // skriv tillegsshjelpefiler til disk if (helperFiles != null) { foreach (var file in helperFiles) { SaveFile(file.Key, file.Value); } } void SaveFile(string name, string content) { System.IO.File.WriteAllText($"{opplastingsmappe}{name}", content, Encoding.UTF8); } Imposter.UndoImpersonation(); var msg = $"Notatet '{hoveddokument.FileName}' og {vedleggteller} vedlegg har blitt lastet opp!"; return(new Response <string>(opplastingsmappe, msg, Codes.Code.OK)); } else { Imposter.UndoImpersonation(); return(new Response <string>(null, lederInfoResult.Message, Codes.Code.ERROR)); } } else { var msg = $"Feil: Hoveddokumentet '{hoveddokument.FileName}' var ikke i pdf-format."; return(new Response <string>(null, msg, Codes.Code.ERROR)); } } catch (Exception e) { Imposter.UndoImpersonation(); //if (_writeLog) // System.IO.File.AppendAllText(@"C:\inetpub\logs\error.txt", $"{GetUsername()} {e.Message}{System.Environment.NewLine}"); // for debugging //Logger.Log(); return(new Response <string>(null, e.Message, Codes.Code.ERROR)); } }
public async Task <ActionResult> MakeEsignatureJob(IEnumerable <string> mottakere, int dokID, bool selfSign, string fornavn = null, string etternavn = null, HttpPostedFileBase arbeidsavtale = null, bool sendConfirmation = false) { if (Session["ansatt"] != null) { ViewBag.AnsattNr = GetAnsattFromSession().AnsattNr; } else { TempData["statusCode"] = (int)Codes.Code.ERROR; TempData["errorMsg"] = StringConstants.ERROR_GENERIC; return(RedirectToAction("Index", "Signeringsportal", null)); } Imposter.ImpersonateRobot(); var currentPersonnr = ""; // ta vare på personnr i tilfelle en feil oppstår try { // hvis serveren ikke klarer å laste ned dokumentet fra drive (feil med robotpassord el.), // bruke lokale kopier var fileName = _dokumentNavn[dokID]; byte[] docBytes; if (dokID == 0 && arbeidsavtale != null) { if (arbeidsavtale.ContentType.Equals("application/pdf")) { MemoryStream target = new MemoryStream(); arbeidsavtale.InputStream.CopyTo(target); docBytes = target.ToArray(); } else { var msg = $"Feil: Hoveddokumentet '{arbeidsavtale.FileName}' var ikke i pdf-format."; ViewBag.Response = new Response <bool>(false, msg, Codes.Code.ERROR); return(View()); } } else { var res = GoogleDriveDownloader.DownloadDocs(_avtaleURLs[dokID], false); if (res.Success) { docBytes = res.Get(); } else { ViewBag.Response = new Response <bool>(false, res.Message, res.Code); return(View()); } } var documentToSign = new Document(fileName, StringConstants.SIGN_REQUEST, FileType.Pdf, docBytes); var signers = new List <Signer>(); var hjelperfiler = new Dictionary <string, string>(); // hjelpefiler som skal skrives til disk senere // legg til mottakere foreach (var personnr in mottakere) { if (personnr.Equals(HRMHelper.HRM_FLAG)) { // bruker en ansatt, fødselsnummer skal hentes fra HRM var personnrResponse = HRMHelper.FinnPersonnrForAnsatt(GetAnsattFromSession()); if (personnrResponse.Success) { signers.Add(new Signer(new PersonalIdentificationNumber(personnrResponse.Get()), new NotificationsUsingLookup() { SmsIfAvailable = true })); continue; } else { ViewBag.Response = new Response <bool>(false, personnrResponse.Message, Codes.Code.ERROR); return(View()); } } else if (fornavn != null && etternavn != null) { currentPersonnr = personnr; signers.Add(new Signer(new PersonalIdentificationNumber(personnr), new NotificationsUsingLookup() { SmsIfAvailable = true })); hjelperfiler.Add(HelperFile.EMPLOYEE_NAME, $"{etternavn} {fornavn}"); hjelperfiler.Add(HelperFile.SSIN, personnr); // innlogget bruker settes automatisk som nærmeste leder/saksbehandler i WebSak hjelperfiler.Add(HelperFile.MANAGER_AD, GetUsername()); // hvis fødselsnummeret ikke er i HRM antas det at det er nærmeste leder som lastet opp, og AD settes til innlogget bruker } else { ViewBag.Response = new Response <bool>(false, StringConstants.ERROR_MISSING_NAME, Codes.Code.ERROR); return(View()); } } // hvis bruker skal motta varsel på e-post når dokumentet har blitt signert og arkivert i WebSak if (sendConfirmation) { hjelperfiler.Add(HelperFile.ARCHIVE_CONFIRMATION, "true"); } // finn leders fødselsnummer hvis leder også skal signere // leder SKAL ALLTID signere på arbeidskontrakt if (selfSign || dokID == 0) { var lederInfoResponse = ADHelper.GetAnsattInfoForLeder(GetUsername()); if (lederInfoResponse.Success) { var personnrResponse = HRMHelper.FinnPersonnrForAnsatt(lederInfoResponse.Get()); if (personnrResponse.Success) { // setter onBehalfOf.other for å ikke havne i leders private postkasse signers.Add(new Signer(new PersonalIdentificationNumber(personnrResponse.Get()), new Notifications(new Email(lederInfoResponse.Get().AnsattEPost))) { OnBehalfOf = OnBehalfOf.Other }); } else { ViewBag.Response = new Response <bool>(false, personnrResponse.Message, Codes.Code.ERROR); return(View()); } } else { ViewBag.Response = new Response <bool>(false, lederInfoResponse.Message, Codes.Code.ERROR); return(View()); } } // lag en unik kø-id for dette signeringsoppdraget var queueID = GetUsername() + DateTime.Now.ToShortDateString() + "." + DateTime.Now.ToLongTimeString(); var portalClient = new CustomPortalClient(queueID, fileName); hjelperfiler.Add(HelperFile.SIGNATURE_STATUS, "false"); // hjelpefil som sier noe om status på signeringsoppdrag (false er usignert) // ta vare på referansen til dette signeringsoppdraget for å kunne polle senere hjelperfiler.Add(HelperFile.REFERENCE, portalClient.GetReference()); // lagre filene til disk mens vi venter på signaturen var response = SaveFilesToDisk(new NotatFil(docBytes, fileName), null, fileName, $"{fileName}{Datotype.Signaturdato}", 1, false, hjelperfiler); if (response.Success) { var portalJob = new Job(documentToSign, signers, queueID) { IdentifierInSignedDocuments = IdentifierInSignedDocuments.Name }; // fødselsnummer skal ikke vises i det signerte dokumentet #if !DEBUG await portalClient.Create(portalJob); #endif var responseString = string.Format(StringConstants.ESIGN_SUCCESS, signers.Count() + (signers.Count() == 1 ? " mottaker" : " mottakere")); ViewBag.Response = new Response <bool>(true, responseString, Codes.Code.OK); } else { ViewBag.Response = new Response <bool>(false, response.Message, Codes.Code.ERROR); } } catch (Exception ex) { if (ex.Message.Contains("The Pattern constraint failed")) { ViewBag.Response = new Response <bool>(false, string.Format(StringConstants.INVALID_SSN, currentPersonnr), Codes.Code.ERROR); } else { ViewBag.Response = new Response <bool>(false, ex.Message, Codes.Code.ERROR); } } Imposter.UndoImpersonation(); return(View()); }
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)); } }
public async Task <ActionResult> EditUser(EditUserViewModel model) { var Roleslist = context.Roles.OrderBy(r => r.Name).ToList().Select(rr => new SelectListItem { Value = rr.Name.ToString(), Text = rr.Name }).ToList(); ViewBag.Roles = Roleslist; List <UserEntity> RoleManagers = UserServices.GetUserByRoleName("Manager"); List <UserEntity> RoleAdmins = UserServices.GetUserByRoleName("Admin"); RoleManagers.AddRange(RoleAdmins); ViewBag.Manager = RoleManagers; ViewBag.Designations = UserServices.GetAllDesignations(); if (ModelState.IsValid) { UserEntity UserObj = UserServices.GetUserByID(model.UserId); if (UserObj != null) { try { ApplicationUser User = await UserManager.FindByNameAsync(UserObj.UserName); IList <string> UserRoles = await UserManager.GetRolesAsync(User.Id); foreach (var role in UserRoles) { await UserManager.RemoveFromRoleAsync(User.Id, role); } await UserManager.AddToRoleAsync(User.Id, model.Role); if (model.Password != null) { UserStore <ApplicationUser> store = new UserStore <ApplicationUser>(context); String hashedNewPassword = UserManager.PasswordHasher.HashPassword(model.Password); ApplicationUser cUser = await store.FindByIdAsync(User.Id); await store.SetPasswordHashAsync(cUser, hashedNewPassword); await store.UpdateAsync(cUser); } UserObj.Name = model.Name; UserObj.Email = model.Email; UserObj.PersonalEmail = model.PersonalEmail; UserObj.ManagerId = model.ManagerId; UserObj.DesignationId = model.DesignationId; UserObj.ContactNo = model.ContactNo; UserObj.Address = model.Address; UserObj.Salary = model.Salary; UserObj.DOJ = model.DOJ; UserObj.DOR = model.DOR; UserObj.DOB = model.DOB; //Speial Case For Admin by UserName if (UserObj.UserName == "Admin") { UserObj.Status = true; } else { UserObj.Status = model.Status; } int x = UserServices.InsertUpdateUser(UserObj); if (x > 0) { TempData[HRMWeb.Helpers.AlertStyles.Success] = UserObj.UserName + " is Updated Successfully."; } try { if (Request.Files.Count > 0) { var file = Request.Files[0]; if (file != null && file.ContentLength > 0) { string FileExtention = Path.GetExtension(file.FileName); string NewFileName = UserObj.UserId.ToString() + FileExtention; string path = HRMHelper.GetUserDirectory(); path = Path.Combine(path, NewFileName); file.SaveAs(path); path = path.Replace(Server.MapPath("~"), ""); path = path.Replace("\\", "/"); UserObj.Image = path; int y = UserServices.InsertUpdateUser(UserObj); if (y > 0) { model.Image = path; } } } } catch { } } catch { TempData[HRMWeb.Helpers.AlertStyles.Warning] = "Updation Fails"; } } } if (model.Image == null) { model.Image = string.Empty; } return(View(model)); }
public async Task <ActionResult> Register(RegisterViewModel model) { var Roleslist = context.Roles.OrderBy(r => r.Name).ToList().Select(rr => new SelectListItem { Value = rr.Name.ToString(), Text = rr.Name }).ToList(); ViewBag.Roles = Roleslist; List <UserEntity> RoleManagers = UserServices.GetUserByRoleName("Manager"); List <UserEntity> RoleAdmins = UserServices.GetUserByRoleName("Admin"); RoleManagers.AddRange(RoleAdmins); ViewBag.Manager = RoleManagers; ViewBag.Designations = UserServices.GetAllDesignations(); if (ModelState.IsValid) { var user = new ApplicationUser() { UserName = model.UserName }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { UserEntity ob = new UserEntity(); ob.UserName = user.UserName; ob.Name = model.Name; ob.Status = model.Status; ob.Guid = user.Id; ob.Email = model.Email; ob.PersonalEmail = model.PersonalEmail; ob.DesignationId = model.DesignationId; ob.ContactNo = model.ContactNo; ob.Address = model.Address; ob.Salary = model.Salary; ob.ManagerId = model.ManagerId; ob.DOB = model.DOB; ob.DOJ = model.DOJ; ob.DOR = model.DOR; ob.UserId = UserServices.InsertUpdateUser(ob); if (ob.UserId > 0) { TempData[HRMWeb.Helpers.AlertStyles.Success] = model.UserName + " is Successfully added"; UserManager.AddToRole(user.Id, model.Role); } else { var tempUser = UserManager.FindByName(model.UserName); await UserManager.DeleteAsync(tempUser); } //await SignInAsync(user, isPersistent: false); //return RedirectToAction("Index", "Home"); try { if (Request.Files.Count > 0) { var file = Request.Files[0]; if (file != null && file.ContentLength > 0) { string FileExtention = Path.GetExtension(file.FileName); string NewFileName = ob.UserId.ToString() + FileExtention; string path = HRMHelper.GetUserDirectory(); path = Path.Combine(path, NewFileName); file.SaveAs(path); path = path.Replace(Server.MapPath("~"), ""); path = path.Replace("\\", "/"); ob.Image = path; UserServices.InsertUpdateUser(ob); } } } catch { } model = new RegisterViewModel(); } else { string error = ""; foreach (string item in result.Errors) { error += item + "\n"; } TempData[HRMWeb.Helpers.AlertStyles.Danger] = error; //AddErrors(result); } } // If we got this far, something failed, redisplay form return(View(model)); }