OBS! Den version af Internet Explorer, du benytter, er forældet. Vi anbefaler, du gør brug af en nyere browser, så du får den fulde oplevelse, når du besøger Rybners.dk

Førstehjælp 

Hvad gør du, hvis din kollega kommer til skade eller får hjertestop?

Her er værktøjerne til at hjælpe og redde liv, med en hurtig førstehjælpsindsats. Vi afholder gerne kurserne på din virksomhed, så ring og hør nærmere

Kommende kurser
 

Error executing template "/Designs/rybners/Paragraph/rybners-course-overview.cshtml"
Newtonsoft.Json.JsonSerializationException: Error getting value from 'UserPermissions' on 'Dynamicweb.Content.Area'. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at Dynamicweb.Content.Area.get_UserPermissions()
at GetUserPermissions(Object )
at Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(Object target)
--- End of inner exception stack trace ---
at Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(Object target)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriter writer, Object value, JsonContainerContract contract, JsonProperty member, JsonProperty property, JsonContract& memberContract, Object& memberValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)
at Newtonsoft.Json.Converters.KeyValuePairConverter.WriteJson(JsonWriter writer, Object value, JsonSerializer serializer)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeConvertable(JsonWriter writer, JsonConverter converter, Object value, JsonContract contract, JsonContainerContract collectionContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)
at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)
at Newtonsoft.Json.JsonConvert.SerializeObjectInternal(Object value, Type type, JsonSerializer jsonSerializer)
at Newtonsoft.Json.JsonConvert.SerializeObject(Object value, JsonSerializerSettings settings)
at CompiledRazorTemplates.Dynamic.RazorEngine_abe4ecd3051c4ef78edd8bcad7dabbe8.Execute() in E:\Dynamicweb.NET\Solutions\Co3\staging.rybners.espresso4.dk\Files\Templates\Designs\rybners\Paragraph\rybners-course-overview.cshtml:line 70
at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @using Co3.Espresso.Website.Services 2 @using Co3.Rybners.Website.Services 3 @using Dynamicweb.Content 4 @using Dynamicweb.Frontend 5 @using Newtonsoft.Json 6 @using Page = Dynamicweb.Content.Page 7 @using PageService = Dynamicweb.Content.PageService 8 9 <div class="container-fluid"> 10 <div class="row"> 11 <div class="col-12"> 12 13 @{ 14 PageService ps = new PageService(); 15 PageCollection courseItemCollection = ps.GetPagesForItems( new[] { "CourseItem" } ); 16 17 object courseItemCategories = PageView.Current().Item[ "KursusKategorier" ]; 18 string[] courseCategories = courseItemCategories.ToString().ToLower().Trim().Replace( " ", "" ).Split( ',' ); 19 20 Dictionary< string, Page > matchingCourseCollection = new Dictionary< string, Page >(); 21 IEnumerable< Page > pagesWithCategory = courseItemCollection.Where( hc => courseCategories.Contains( hc.Item[ "KategoriNavn" ]?.ToString().ToLower().Trim().Replace( " ", "" ) ) ); 22 bool showAllCourses = false; 23 24 if (PageView.Current().Page.Item["ShowAllCourses"] != null ) 25 { 26 showAllCourses = (bool) PageView.Current().Page.Item["ShowAllCourses"]; 27 } 28 29 if ( showAllCourses == true ) 30 { 31 pagesWithCategory = courseItemCollection.Where( p => p.Area.ID == PageView.Current().Area.ID ); 32 } 33 34 List<Page> pagesWithCategoryWithoutHold = new List<Page>(); 35 36 37 foreach ( Page page in pagesWithCategory ) 38 { 39 Page teamPage = RybnersItemService.Instance.GetTeamsForCourse( page.ID ).OrderByDescending( c => 40 { 41 string courseDeadlineStr = c.Item["HoldTilmeldingsfrist"]?.ToString(); 42 DateTime courseDeadlineDate = new DateTime(); 43 DateTime.TryParse( courseDeadlineStr, out courseDeadlineDate ); 44 return courseDeadlineDate; 45 }).Take(1).FirstOrDefault(); 46 if ( teamPage != null ) 47 { 48 string holdId = teamPage.Item["HoldAktiId"].ToString(); 49 if (!matchingCourseCollection.ContainsKey( holdId )) 50 { 51 matchingCourseCollection.Add( holdId, teamPage ); 52 } 53 } 54 else 55 { 56 pagesWithCategoryWithoutHold.Add(page); 57 } 58 } 59 } 60 61 62 @if ( matchingCourseCollection.Any() ) 63 { 64 65 <ul class="rybners-course-overview"> 66 @foreach ( KeyValuePair< string, Page > firstTeamInCourse in matchingCourseCollection.OrderBy( c => (DateTime)c.Value.Item[ "HoldStartDato" ]) ) 67 { 68 string holdId = firstTeamInCourse.Value.Item[ "HoldAktiId" ]?.ToString(); 69 70 <script>console.log("%cTEXT", "color:white;background:rebeccapurple;padding:5px;", @Newtonsoft.Json.JsonConvert.SerializeObject(firstTeamInCourse, new JsonSerializerSettings {ReferenceLoopHandling = ReferenceLoopHandling.Ignore, PreserveReferencesHandling = PreserveReferencesHandling.Objects}));</script> 71 72 73 74 75 var teams = RybnersItemService.Instance.GetTeamsForCourse( firstTeamInCourse.Value.Parent.ID ); 76 var teamsSorted = teams.Where( t => ( DateTime ) t.Item[ "HoldStartDato" ] > DateTime.Now ); 77 var severalTeams = teamsSorted.Count() > 1; 78 79 var fagByCourseItemList = RybnersItemService.Instance.GetSchoolSubjectsForCourse( firstTeamInCourse.Value.Parent.ID ); 80 81 82 83 if ( firstTeamInCourse.Value != null && firstTeamInCourse.Value.Item != null && holdId != null ) 84 { 85 string courseName = firstTeamInCourse.Value.Item[ "HoldAktivitetsnavn" ]?.ToString(); 86 string courseType = firstTeamInCourse.Value.Parent.Item[ "AktivitetOfflineVisning" ]?.ToString(); 87 88 string courseStartStr = firstTeamInCourse.Value.Item[ "HoldStartDato" ]?.ToString(); 89 DateTime courseStartDate = new DateTime(); 90 DateTime.TryParse( courseStartStr, out courseStartDate ); 91 92 string courseEndStr = firstTeamInCourse.Value.Item[ "HoldSlutDato" ]?.ToString(); 93 DateTime courseEndDate = new DateTime(); 94 DateTime.TryParse( courseEndStr, out courseEndDate ); 95 96 string courseDeadlineStr = firstTeamInCourse.Value.Item[ "HoldTilmeldingsfrist" ]?.ToString(); 97 DateTime courseDeadlineDate = new DateTime(); 98 DateTime.TryParse( courseDeadlineStr, out courseDeadlineDate ); 99100 var fagItem = fagByCourseItemList.FirstOrDefault(); 101102 string courseDuration = null; 103 if ( fagItem != null ) 104 { 105 courseDuration = fagItem[ "SkoleFagVarighed" ].ToString(); 106 } 107 double courseDurationDouble; 108 double.TryParse( courseDuration, out courseDurationDouble ); 109 string courseUrl = string.Format( "Default.aspx?ID={0}", firstTeamInCourse.Value.Parent.ID ); 110111 courseUrl = SearchEngineFriendlyURLs.GetFriendlyUrl( courseUrl ); 112113 bool hasDeadlineInFurture = (courseDeadlineDate.Date) >= DateTime.Now.Date; 114115 bool isOpenCourseOrGuaranteed = hasDeadlineInFurture && ( (bool) firstTeamInCourse.Value.Item["HoldErGarantikursus"] == true || (string) firstTeamInCourse.Value.Item["HoldType"] == "av") ; 116117 bool isFull = (string)firstTeamInCourse.Value.Item["HoldStatus"] == "Optaget"; 118119120 bool isAllFull = true; 121122 foreach ( var d in teamsSorted ) 123 { 124 if ( (string)d.Item["HoldStatus"] != "Optaget" ) 125 { 126 isAllFull = false; 127 } 128 } 129130 if ( isAllFull ) 131 { 132 continue; 133 } 134135136137138 if ((courseDeadlineDate.Date) >= DateTime.Now.Date && teamsSorted.Any( t => ((int) t.Item["HoldLedigePladser"]) > 0 ) || isOpenCourseOrGuaranteed == true ) 139 { 140 <li class="align-self-center d-flex rybners-course-list w-100"> 141 <div class="course-name"> 142 <a href="@courseUrl"> 143 @if ( showAllCourses ) 144 { 145 <h5 class="mb-0 text-muted"> 146 @firstTeamInCourse.Value.Parent.Item["KategoriNavn"] 147 </h5> 148 <h3 class="mt-0">@courseName</h3> 149 } 150 else 151 { 152 <h3>@courseName</h3> 153 } 154155 </a> 156 </div> 157158 @if ( fagByCourseItemList.Count() > 1 ) 159 { 160 <div class="course-date small">Flere fag tilknyttet</div> 161 } 162 else 163 { 164 <div class="course-date small"> 165 <table class="table"> 166 @foreach (Page teamPage in teamsSorted.OrderBy( t => (DateTime)t.Item[ "HoldStartDato" ] )) 167 { 168 DateTime startDato = ( DateTime ) teamPage.Item[ "HoldStartDato" ]; 169 DateTime slutDato = ( DateTime ) teamPage.Item[ "HoldSlutDato" ]; 170 double freeSpots; 171 double.TryParse( teamPage.Item["HoldLedigePladser"]?.ToString(), out freeSpots ); 172 <tr> 173 <td class="px-0"> 174 @startDato.ToString("dd. MMM yyyy")- @slutDato.ToString("dd. MMM yyyy") 175 </td> 176 <td class=" px-0 text-right"> 177 <span class="badge p-1 badge-pill badge-secondary"> 178 @if ( freeSpots > 0) 179 { 180 <span>@freeSpots ledige pladser</span> 181 } 182 else 183 { 184 <span>Kontakt os</span> 185 } 186187 </span> 188 </td> 189 </tr> 190 } 191 </table> 192 </div> 193194 } 195 <div class="course-signup text-right"> 196 <a class="btn btn-sm " href="@courseUrl">@Translate( "Rybners Course module - Signup DA - Button", "Se mere og tilmeld" )</a> 197 <br /> 198 </div> 199 <div class="course-type text-left"> 200201 @if ( courseType == "amu" ) 202 { 203 <p class="mb-0 mr-2 float-left"><i class="material-icons">done</i> AMU-kursus</p> 204 } 205 else if ( courseType == "idv") 206 { 207 <p class="mb-0 mr-2 float-left"><i class="material-icons">done</i> IDV-kursus</p> 208 } 209 else 210 { 211 <p class="mb-0">@courseType</p> 212 } 213214 </div> 215 <div class="course-deadline text-right"> 216 @if ( fagByCourseItemList.Count() == 1 && (courseDeadlineDate.Date) >= DateTime.Now.Date ) 217 { 218 <small>@Translate( "Rybners Course module - Deadline DA - Text", "Tilmeldingsfrist:" )<br />@courseDeadlineDate.ToString( "dd. MMM yyyy" )</small> 219 } 220 </div> 221 </li> 222 } 223 } 224 } 225 </ul> 226 } 227 else 228 { 229 <p>Der er pt. ingen hold oprettet - @Translate( "Rybners Course module - Inactive contact DA - Text", "Kontakt skolen" )</p> 230 } 231232 <h2>Vi tilbyder også kurser indenfor:</h2> 233234 <ul class="rybners-course-overview"> 235236 @if ( matchingCourseCollection.Any() ) 237 { 238 foreach ( KeyValuePair<string, Page> coursePage in matchingCourseCollection ) 239 { 240241 string holdId = coursePage.Value.Item["HoldAktiId"]?.ToString(); 242 var fagByCourseItemList = RybnersItemService.Instance.GetSchoolSubjectsForCourse( coursePage.Value.Parent.ID ); 243 var teams = RybnersItemService.Instance.GetTeamsForCourse( coursePage.Value.Parent.ID ); 244 if ( coursePage.Value != null && coursePage.Value.Item != null && holdId != null ) 245 { 246 string courseName = coursePage.Value.Item["HoldAktivitetsnavn"]?.ToString(); 247 string courseType = coursePage.Value.Parent.Item["AktivitetOfflineVisning"]?.ToString(); 248249 string courseStartStr = coursePage.Value.Item["HoldStartDato"]?.ToString(); 250 DateTime courseStartDate = new DateTime(); 251 DateTime.TryParse( courseStartStr, out courseStartDate ); 252253 string courseEndStr = coursePage.Value.Item["HoldSlutDato"]?.ToString(); 254 DateTime courseEndDate = new DateTime(); 255 DateTime.TryParse( courseEndStr, out courseEndDate ); 256257 string courseDeadlineStr = coursePage.Value.Item["HoldTilmeldingsfrist"]?.ToString(); 258 DateTime courseDeadlineDate = new DateTime(); 259 DateTime.TryParse( courseDeadlineStr, out courseDeadlineDate ); 260261262 string courseUrl = string.Format( "Default.aspx?ID={0}", coursePage.Value.Parent.ID ); 263264 courseUrl = SearchEngineFriendlyURLs.GetFriendlyUrl( courseUrl ); 265266267 bool hasAnyFreeTeams = teams.Any( t => (DateTime) t.Item["HoldTilmeldingsfrist"] > DateTime.Now ); 268 bool hasAnyFreeSpots = teams.Any(t => (int)t.Item["HoldLedigePladser"] > 0); 269 bool isFull = (string)coursePage.Value.Item["HoldStatus"] == "Optaget"; 270271 bool isAllFull = true; 272273 foreach ( var d in teams ) 274 { 275 if ( (string)d.Item["HoldStatus"] != "Optaget" ) 276 { 277 isAllFull = false; 278 } 279 } 280281 if ( isAllFull ) 282 { 283 continue; 284 } 285286287 bool isOpenCourseOrGuaranteed = teams.Any(t => (bool)t.Item["HoldErGarantikursus"] == true || (string)t.Item["HoldType"] == "av" ) && hasAnyFreeTeams; 288289 if ( isAllFull == true || isOpenCourseOrGuaranteed == false && (hasAnyFreeTeams == false || hasAnyFreeSpots == false) ) 290 { 291 <li class="align-self-center d-flex rybners-course-list rybners-course-list-others w-100"> 292 <div class="course-name small"> 293 <h3 class="small"> 294 <a href="@courseUrl"> 295 @courseName 296 </a> 297 </h3> 298 </div> 299300 <div class="text-right">@Translate( "Rybners Course module - Inactive contact DA - Text", "Kontakt skolen" )</div> 301 </li> 302 } 303 } 304 } 305 } 306307308309310 @foreach ( Page fagsideWithoutHold in pagesWithCategoryWithoutHold ) 311 { 312 bool showFag = bool.Parse(fagsideWithoutHold.Item["AktivitetVisesOffline"]?.ToString() ?? bool.FalseString); 313 bool activeFag = bool.Parse(fagsideWithoutHold.Item["AktivitetVisible"]?.ToString() ?? bool.FalseString); 314315 if ( activeFag == true && showFag == true ) 316 { 317 string courseName = fagsideWithoutHold.Item["AktivitetNavn"]?.ToString(); 318 string courseUrl = string.Format( "Default.aspx?ID={0}", fagsideWithoutHold.ID ); 319320 courseUrl = SearchEngineFriendlyURLs.GetFriendlyUrl( courseUrl ); 321322 <li class="align-self-center d-flex rybners-course-list rybners-course-list-others w-100"> 323 <div class="course-name small"> 324 <h3 class="small"> 325 <a href="@courseUrl"> 326 @courseName 327 </a> 328 </h3> 329 </div> 330331 <div class="text-right">@Translate( "Rybners Course module - Inactive contact DA - Text", "Kontakt skolen" )</div> 332 </li> 333 } 334 } 335 </ul> 336337 </div> 338 </div> 339 </div> 340

Kontakt

 

Susanne Ellehage Justesen

Account manager

smartphone+4541999400

mailsej@rybners.dk

Susanne Ellehage Justesen


Camilla Eve Jessen

Full-service koordinator

smartphone+45 2071 5178

mailcej@rybners.dk

Camilla Eve Jessen


Tilmelding

 

Mette Juhl

smartphone7913 4555

mailsvejsadm@rybners.dk

keyboard_arrow_up