public bool RegistrerVakt (Vaktskjema innVakt, string brukernavn) { var dbtp = new DbTransaksjonerProsjekt(); if (!dbtp.ErAdmin(brukernavn, innVakt.ProsjektId) && !dbtp.ErEier(brukernavn, innVakt.ProsjektId)) { return false; } string start = innVakt.start+" "+innVakt.startTid; string end; IFormatProvider culture = System.Threading.Thread.CurrentThread.CurrentCulture; DateTime dt1 = DateTime.ParseExact(start, "dd.MM.yyyy H:mm", culture, System.Globalization.DateTimeStyles.AssumeLocal); DateTime dt2; if (innVakt.end != "" && innVakt.endDato == true) { end = innVakt.end + " " + innVakt.endTid; dt2 = DateTime.ParseExact(end, "dd.MM.yyyy H:mm", culture, System.Globalization.DateTimeStyles.AssumeLocal); } else { end = innVakt.start + " " + innVakt.endTid; dt2 = DateTime.ParseExact(end, "dd.MM.yyyy H:mm", culture, System.Globalization.DateTimeStyles.AssumeLocal); } int result = DateTime.Compare(dt1, dt2); if (result > 0 || result==0) { return false; } var nyVakt = new Vakt() { start = dt1, end = dt2, title = innVakt.title, Beskrivelse = innVakt.Beskrivelse, BrukerId = innVakt.BrukerId, ProsjektId = innVakt.ProsjektId }; if (LedigVakt(innVakt)) { nyVakt.Ledig = true; nyVakt.color = "#5CB85C"; } using (var db = new Dbkontekst()) { try { db.Vakter.Add(nyVakt); db.SaveChanges(); return true; } catch (Exception feil) { return false; } } }
public VaktTest() { // Lager mocks som vi kan gjøre spørringer mot List<Vaktkalender> vakter = new List<Vaktkalender> { // new Vaktkalender {ProsjektId = 1, start = Convert.ToDateTime("22.12.2012 16.43"),end = Convert.ToDateTime("22.12.2012 16.43"),title = "Dagvakt",Beskrivelse = "Opplæring"}, // new Vaktkalender {ProsjektId = 2, start = Convert.ToDateTime("22.12.2012 16.43"),end = Convert.ToDateTime("22.12.2012 16.43"),title = "Dagvakt",Beskrivelse = "Opplæring" }, //new Vaktkalender {ProsjektId = 3, Brukernavn = "", start = Convert.ToDateTime("22.12.2012 16.43"),end = Convert.ToDateTime("22.12.2012 16.43"),title = "Dagvakt",Beskrivelse = "Opplæring"} }; List<VaktRequest> vaktReq = new List<VaktRequest> { new VaktRequest { BrukerIdTil = 1, BrukerIdFra = 2, MeldingId = 1, VaktId = 1, ProsjektId = 1, } }; List<Vakt> vakterDB = new List<Vakt> { new Vakt {VaktId = 1, ProsjektId = 1, start = Convert.ToDateTime("22.12.2012 16.43"),end = Convert.ToDateTime("22.12.2012 16.43"),title = "Dagvakt",Beskrivelse = "Opplæring"}, new Vakt {ProsjektId = 2, start = Convert.ToDateTime("22.12.2012 16.43"),end = Convert.ToDateTime("22.12.2012 16.43"),title = "Dagvakt",Beskrivelse = "Opplæring" }, new Vakt {ProsjektId = 3, BrukerId = 1, start = Convert.ToDateTime("22.12.2012 16.43"),end = Convert.ToDateTime("22.12.2012 16.43"),title = "Dagvakt",Beskrivelse = "Opplæring"}, new Vakt {ProsjektId = 3, BrukerId = 0, Ledig = true, start = Convert.ToDateTime("22.12.2012 16.43"),end = Convert.ToDateTime("22.12.2012 16.43"),title = "Dagvakt",Beskrivelse = "Opplæring"} }; List<Maler> maler = new List<Maler> { new Maler {ProsjektId=1,startTid = "07.15", sluttTid = "14.15", Tittel = "dagvakt"} }; List<dbBruker> bruker = new List<dbBruker> { new dbBruker { BrukerId = 1, Email = "*****@*****.**" }, new dbBruker { BrukerId = 2, Email = "*****@*****.**" }, new dbBruker { BrukerId = 3, Email = "*****@*****.**" } }; List<Prosjekt> prosjekter = new List<Prosjekt> { new Prosjekt() { ProsjektId=1,EierId=1 }, new Prosjekt() { ProsjektId=2,EierId=2 } }; List<Prosjektdeltakelse> deltakelser = new List<Prosjektdeltakelse> { new Prosjektdeltakelse { ProsjektDeltakerId=1, BrukerId = 1, ProsjektId = 1, Admin = false, Medlemsdato = Convert.ToDateTime("22.12.2012 16.43") }, new Prosjektdeltakelse { ProsjektDeltakerId=2, BrukerId = 2, ProsjektId = 1, Admin = true, Medlemsdato = Convert.ToDateTime("22.12.2012 16.43") }, new Prosjektdeltakelse { ProsjektDeltakerId=3, BrukerId = 3, ProsjektId = 1, Admin = false, Medlemsdato = Convert.ToDateTime("22.12.2012 16.43") } }; Mock<InterfaceDbTProsjekt> mockProductRepositoryProsjekt = new Mock<InterfaceDbTProsjekt>(); Mock<InterfaceDbTVakt> mockProductRepository = new Mock<InterfaceDbTVakt>(); List<Vakt> myFilteredFoos = null; mockProductRepository.Setup(mr => mr.hentAlleVakter(It.IsAny<int>(), It.IsAny<string>())) .Callback((int i, string u) => myFilteredFoos = vakterDB.Where(x => x.ProsjektId == i).ToList()) .Returns(() => { List<Vaktkalender> testliste = new List<Vaktkalender>(); foreach (var vakt in myFilteredFoos) { testliste.Add(new Vaktkalender() { ProsjektId = vakt.ProsjektId, start = vakt.start, end = vakt.end, title = vakt.title, Beskrivelse = vakt.Beskrivelse }); } return testliste; }); List<Maler> malene = null; mockProductRepository.Setup(mr => mr.hentAlleMaler(It.IsAny<int>(), It.IsAny<string>())) .Callback((int i, string u) => malene = maler.Where(x => x.ProsjektId == i).ToList()) .Returns(() => { List<VisMaler> testliste = new List<VisMaler>(); foreach (var mal in malene) { testliste.Add(new VisMaler() { ProsjektId = mal.ProsjektId, startTid = mal.startTid, sluttTid = mal.sluttTid, Tittel= mal.Tittel }); } return testliste; }); mockProductRepository.Setup(mr => mr.visVaktRequester(It.IsAny<string>())) .Returns( (string u) => { int id = this.mockProductRepositoryProsjekt.BrukerId(u); List<VaktRequestMelding> req = (from p in vaktReq from b in bruker from s in vakterDB where p.BrukerIdTil == id && p.BrukerIdFra == b.BrukerId && p.VaktId == s.VaktId select new VaktRequestMelding() { MeldingId = p.MeldingId, ProsjektId = p.ProsjektId, FraBruker = b.Email, Melding = " vil ta vakten: ", VaktId = p.VaktId, Tid = p.Sendt, TilBruker = u }).ToList(); return req; }); mockProductRepository.Setup(mr => mr.requestOk(It.IsAny<int>())) .Returns( (int i) => { try { var Requester = vaktReq.FirstOrDefault(p => p.MeldingId == i); var OppdaterVakt = vakterDB.FirstOrDefault(p => p.VaktId == Requester.VaktId); OppdaterVakt.BrukerId = Requester.BrukerIdFra; OppdaterVakt.Ledig = false; OppdaterVakt.color = "#3A87AD"; vaktReq.Remove(Requester); return true; } catch (Exception feil) { return false; } }); mockProductRepository.Setup(mr => mr.hentAlleLedigeVakter(It.IsAny<int>(), It.IsAny<string>())) .Callback((int i, string u) => myFilteredFoos = vakterDB.Where(x => x.ProsjektId == i && x.BrukerId == 0).ToList()) .Returns(() => { List<Vaktkalender> testliste = new List<Vaktkalender>(); foreach (var vakt in myFilteredFoos) { testliste.Add(new Vaktkalender() { ProsjektId = vakt.ProsjektId, Ledig = vakt.Ledig, start = vakt.start, end = vakt.end, title = vakt.title, Beskrivelse = vakt.Beskrivelse }); } return testliste; }); mockProductRepository.Setup(mr => mr.hentAlleVakterForBruker(It.IsAny<string>())) .Returns((string u) => { var user = bruker.Where(x => x.Email == u ).Single(); int id = user.BrukerId; myFilteredFoos = vakterDB.Where(x => x.BrukerId == id).ToList(); List<Vaktkalender> testliste = new List<Vaktkalender>(); foreach (var vakt in myFilteredFoos) { testliste.Add(new Vaktkalender() { ProsjektId = vakt.ProsjektId, Brukernavn = user.Email, Ledig = vakt.Ledig, start = vakt.start, end = vakt.end, title = vakt.title, Beskrivelse = vakt.Beskrivelse }); } return testliste; }); mockProductRepository.Setup(mr => mr.SlettVakt(It.IsAny<int>(), It.IsAny<string>())) .Returns((int i, string u) => { var slettVakt = vakterDB.FirstOrDefault(p => p.VaktId == i); if (!this.mockProductRepositoryProsjekt.ErAdmin(u, slettVakt.ProsjektId) && !this.mockProductRepositoryProsjekt.ErEier(u, slettVakt.ProsjektId)) { return false; } try { vakterDB.Remove(slettVakt); return true; } catch (Exception feil) { return false; } }); mockProductRepository.Setup(mr => mr.LedigVakt(It.IsAny<Vaktskjema>())) .Returns((Vaktskjema i) => { if (i.BrukerId == 0) { return true; } return false; }); mockProductRepository.Setup(mr => mr.taLedigVakt(It.IsAny<int>(), It.IsAny<string>())) .Returns((int i, string u) => { try { // finn personen i databasen Vakt taVakt = vakterDB.FirstOrDefault(p => p.VaktId == i); VaktRequest nyRequest = new VaktRequest(); // oppdater vakt fra databasen var pId = taVakt.ProsjektId; Prosjekt prosjekt = prosjekter.FirstOrDefault(p => p.ProsjektId == pId); nyRequest.VaktId = taVakt.VaktId; nyRequest.Sendt = DateTime.Now; nyRequest.BrukerIdFra = this.mockProductRepositoryProsjekt.BrukerId(u); nyRequest.BrukerIdTil = prosjekt.EierId; nyRequest.ProsjektId = prosjekt.ProsjektId; vaktReq.Add(nyRequest); return true; } catch (Exception feil) { return false; } }); mockProductRepository.Setup(mr => mr.VakterProsjekt(It.IsAny<int>())) .Returns((int i) => { var eventer = (from k in vakterDB where k.ProsjektId == i select k ).ToList(); return eventer; }); mockProductRepository.Setup(mr => mr.RegistrerVakt(It.IsAny<Vaktskjema>(), It.IsAny<string>())).Returns( (Vaktskjema vakt, string u) => { if (!this.mockProductRepositoryProsjekt.ErAdmin(u, vakt.ProsjektId) && !this.mockProductRepositoryProsjekt.ErEier(u, vakt.ProsjektId)) { return false; } Vakt nyVakt = new Vakt(); nyVakt.ProsjektId = vakt.ProsjektId; nyVakt.BrukerId = vakt.ProsjektId; string start = vakt.start + " " + vakt.startTid; IFormatProvider culture = System.Threading.Thread.CurrentThread.CurrentCulture; DateTime dt1 = DateTime.ParseExact(start, "dd.MM.yyyy H:mm", culture, System.Globalization.DateTimeStyles.AssumeLocal); DateTime dt2; string end = ""; if (vakt.end != null) { end = vakt.end + " " + vakt.endTid; dt2 = DateTime.ParseExact(end, "dd.MM.yyyy H:mm", culture, System.Globalization.DateTimeStyles.AssumeLocal); } else { end = vakt.start + " " + vakt.endTid; dt2 = DateTime.ParseExact(end, "dd.MM.yyyy H:mm", culture, System.Globalization.DateTimeStyles.AssumeLocal); } nyVakt.start = dt1; nyVakt.end = dt2; int result = DateTime.Compare(dt1, dt2); if (result > 0 || result == 0) { return false; } else { vakterDB.Add(nyVakt); } return true; }); mockProductRepository.Setup(mr => mr.EndreVakt(It.IsAny<Vaktskjema>(), It.IsAny<string>())).Returns( (Vaktskjema vakt, string u) => { if (!this.mockProductRepositoryProsjekt.ErAdmin(u, vakt.ProsjektId) && !this.mockProductRepositoryProsjekt.ErEier(u, vakt.ProsjektId)) { return false; } var NyEndreVakt = vakterDB.FirstOrDefault(p => p.VaktId == vakt.Vaktid); string start = vakt.start + " " + vakt.startTid; string end; IFormatProvider culture = System.Threading.Thread.CurrentThread.CurrentCulture; DateTime dt1 = DateTime.ParseExact(start, "dd.MM.yyyy H:mm", culture, System.Globalization.DateTimeStyles.AssumeLocal); DateTime dt2; if (vakt.end != "" && vakt.endDato == true) { end = vakt.end + " " + vakt.endTid; dt2 = DateTime.ParseExact(end, "dd.MM.yyyy H:mm", culture, System.Globalization.DateTimeStyles.AssumeLocal); } else { end = vakt.start + " " + vakt.endTid; dt2 = DateTime.ParseExact(end, "dd.MM.yyyy H:mm", culture, System.Globalization.DateTimeStyles.AssumeLocal); } int result = DateTime.Compare(dt1, dt2); if (result > 0 || result == 0) { return false; } if (!this.mockProductRepositoryProsjekt.ErAdmin(u, NyEndreVakt.ProsjektId) && !this.mockProductRepositoryProsjekt.ErEier(u, NyEndreVakt.ProsjektId)) { return false; } try { NyEndreVakt.Beskrivelse = vakt.Beskrivelse; NyEndreVakt.BrukerId = vakt.BrukerId; NyEndreVakt.start = dt1; NyEndreVakt.end = dt2; NyEndreVakt.title = vakt.title; if (this.mockProductRepository.LedigVakt(vakt)) { NyEndreVakt.Ledig = true; NyEndreVakt.color = "#5CB85C"; } else { NyEndreVakt.Ledig = false; NyEndreVakt.color = "#3A87AD"; } return true; } catch (Exception feil) { return false; } }); mockProductRepositoryProsjekt.Setup(mr => mr.ErEier(It.IsAny<string>(), It.IsAny<int>())) .Returns( (string u, int i) => { var bId = this.mockProductRepositoryProsjekt.BrukerId(u); var TestOk = (from x in prosjekter where x.EierId == bId && x.ProsjektId == i select x.EierId).SingleOrDefault(); bool ok = false; if (TestOk != 0) { ok = true; return ok; } return ok; }); mockProductRepositoryProsjekt.Setup(mr => mr.ErAdmin(It.IsAny<string>(), It.IsAny<int>())) .Returns( (string u, int i) => { var okAdmin = false; var bId = this.mockProductRepositoryProsjekt.BrukerId(u); var TestOk = (from x in deltakelser where x.ProsjektId == i && x.BrukerId == bId select x.Admin).SingleOrDefault(); if (TestOk != false) { okAdmin = true; return okAdmin; } return okAdmin; }); mockProductRepositoryProsjekt.Setup(mr => mr.BrukerId(It.IsAny<string>())) .Returns( (string u) => { int userId = (from x in bruker where x.Email == u select x.BrukerId).SingleOrDefault(); return userId; }); // Complete the setup of our Mock Product Repository this.mockProductRepositoryProsjekt = mockProductRepositoryProsjekt.Object; this.mockProductRepository = mockProductRepository.Object; }