• More than 20 years experience
  • Complete assessments
  • No agency fees
Schedule an appointment
Schedule an appointment
Error executing template "Designs/ClientBase_generated/Paragraph/JumbotronContainer.cshtml"
System.Data.SqlClient.SqlException (0x80131904): Violation of PRIMARY KEY constraint 'PK__ItemType__3214EC07EAC40CA3'. Cannot insert duplicate key in object 'dbo.ItemType_JumbotronConfiguration'. The duplicate key value is (177139).
The statement has been terminated.
   at System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
   at System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
   at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
   at System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)
   at System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable)
   at Dynamicweb.Content.Items.Queries.Repository.Update(IEnumerable`1 items, ItemContext context, Boolean synchronizePages)
   at Dynamicweb.Content.Items.Queries.Repository.Update(ItemEntry item, ItemContext context)
   at Dynamicweb.Content.Items.ItemEntry.Save(ItemContext context)
   at Bluedesk.DynamicWeb.ItemTypes.Configuration.JumbotronConfiguration.GetJumbotronStylesheet()
   at CompiledRazorTemplates.Dynamic.RazorEngine_54aad6fc0b8b457b847934506caf67e0.Execute() in D:\dynamicweb.net\Solutions\Bluedesk\worldemp.cloud.dynamicweb-cms.com\files\Templates\Designs\ClientBase_generated\Paragraph\JumbotronContainer.cshtml:line 277
   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()
ClientConnectionId:004240c8-cde9-44ff-adfe-7257448ad5ea
Error Number:2627,State:1,Class:14

1 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 2 @using Dynamicweb; 3 @using Dynamicweb.Content.Items; 4 @using Dynamicweb.Content.Items.Metadata; 5 @using Bluedesk.DynamicWeb.ItemTypes; 6 @using Bluedesk.DynamicWeb.ItemTypes.Settings; 7 8 9 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 10 @using Dynamicweb; 11 @using Dynamicweb.Content.Items; 12 @using Bluedesk.DynamicWeb.ItemTypes; 13 @using Bluedesk.DynamicWeb.ItemTypes.Extensions; 14 @using Bluedesk.DynamicWeb.ItemTypes.Configuration; 15 @using Bluedesk.DynamicWeb.ItemTypes.Settings.Configuration; 16 @using Dynamicweb; 17 @using Dynamicweb.Frontend 18 @using Bluedesk.DynamicWeb.ItemTypes.BaseSolution; 19 20 @helper RenderButton(CTAButton button, PageView Pageview) 21 { 22 23 if (!string.IsNullOrWhiteSpace(button.GetLink(Pageview))) 24 { 25 string Template = button.GetButtonTemplate().Replace("{{ ButtonLink }}", button.GetLink(Pageview)); 26 @Template; 27 } 28 } 29 30 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 31 @using Dynamicweb; 32 @using Dynamicweb.Content.Items; 33 @using Bluedesk.DynamicWeb.ItemTypes; 34 35 @functions { 36 37 Dictionary<string, string> GetFontConfiguration(string TextColor, FontConfigurationItemTab FontConfiguration) 38 { 39 var colorService = new ColorSwatchService(); 40 TextColor = !string.IsNullOrWhiteSpace(TextColor) ? TextColor : "" ; 41 TextColor = !TextColor.Contains("#") ? colorService.GetHexColor(Pageview.AreaID, TextColor) : TextColor; 42 Dictionary<string, string> FontConfig = new Dictionary<string, string>() { 43 { "textColor" , TextColor }, 44 { "fontSize" , FontConfiguration.FontSize }, 45 { "lineHeight", FontConfiguration.LineHeight}, 46 { "fontFamily" , FontConfiguration.FontConfiguration.FontFamily }, 47 { "fontWeight" , FontConfiguration.FontWeight }, 48 { "fontStyle" , FontConfiguration.FontStyle } 49 }; 50 return FontConfig; 51 } 52 53 public string GenerateButtonConfigVariables(ButtonConfiguration BC, MasterConfig mc, int areaId) 54 { 55 string ButtonLabelAlignment = BC.ButtonLabelAlignment; 56 switch (ButtonLabelAlignment) 57 { 58 case "align-left": 59 ButtonLabelAlignment = "flex-start"; 60 break; 61 case "align-center": 62 ButtonLabelAlignment = "center"; 63 break; 64 case "align-right": 65 ButtonLabelAlignment = "flex-end"; 66 break; 67 case "align-full": 68 ButtonLabelAlignment = "space-between"; 69 break; 70 default: 71 ButtonLabelAlignment = "flex-start"; 72 break; 73 } 74 75 var btnStyleBlock = new System.Text.StringBuilder(); 76 77 // General Config 78 btnStyleBlock.Append(GenerateCssVar("btn-min-height", $"{mc.GeneralConfiguration.ButtonHeight}px")); 79 btnStyleBlock.Append(GenerateCssVar("btn-border-radius", $"{mc.GeneralConfiguration.RoundedCornerValue}px")); 80 81 // Button Config 82 btnStyleBlock.Append(GenerateCssVar("btn-border-width", $"{BC.BorderSize.ToString()}px")); 83 btnStyleBlock.Append(GenerateCssVar("btn-label-alignment", ButtonLabelAlignment)); 84 85 // Button Config Tab 86 btnStyleBlock.Append(GenerateCssVar("btn-bg-color", BC.ButtonColorConfiguration.BackgroundColor.GetColorCode(areaId))); 87 btnStyleBlock.Append(GenerateCssVar("btn-font-color", BC.ButtonColorConfiguration.FontColor.GetColorCode(areaId))); 88 btnStyleBlock.Append(GenerateCssVar("btn-border-color", BC.ButtonColorConfiguration.BorderColor.GetColorCode(areaId))); 89 90 // Button Config Hover tab 91 btnStyleBlock.Append(GenerateCssVar("btn-bg-color-hover", BC.ButtonHoverColorConfiguration.BackgroundColor.GetColorCode(areaId))); 92 btnStyleBlock.Append(GenerateCssVar("btn-font-color-hover", BC.ButtonHoverColorConfiguration.FontColor.GetColorCode(areaId))); 93 btnStyleBlock.Append(GenerateCssVar("btn-border-color-hover", BC.ButtonHoverColorConfiguration.BorderColor.GetColorCode(areaId))); 94 95 // Button Config Font Config 96 btnStyleBlock.Append(GenerateCssVar("btn-font-size", BC.FontConfiguration.FontSize)); 97 btnStyleBlock.Append(GenerateCssVar("btn-font-config-color", BC.FontConfiguration.Color.GetColorCode(areaId))); 98 btnStyleBlock.Append(GenerateCssVar("btn-font-line-height", BC.FontConfiguration.LineHeight)); 99 btnStyleBlock.Append(GenerateCssVar("btn-font-family", BC.FontConfiguration.FontConfiguration.FontFamily)); 100 btnStyleBlock.Append(GenerateCssVar("btn-font-weight", BC.FontConfiguration.FontWeight)); 101 btnStyleBlock.Append(GenerateCssVar("btn-font-transform", BC.FontConfiguration.FontStyle)); 102 103 return btnStyleBlock.ToString(); 104 } 105 106 public string GenerateCssVar(string name, string value) 107 { 108 if (!string.IsNullOrWhiteSpace(value)) { 109 return $"--{name}: {value};"; 110 } else { 111 return ""; 112 } 113 } 114 } 115 116 117 @{ 118 119 JumbotronContainer _data = Dynamicweb.Content.Services.Items.GetItem("JumbotronContainer", Pageview.CurrentParagraph.ItemId).ToCodeFirstItem<JumbotronContainer>() ?? new JumbotronContainer(); 120 121 var colorService = new ColorSwatchService(); 122 123 string backgroundClass = !string.IsNullOrWhiteSpace(_data.JumbotronConfiguration.BackgroundClass) ? string.Format("bg-{0}", _data.JumbotronConfiguration.BackgroundClass) : ""; 124 string JumbotronHeight = _data.JumbotronHeight + "px"; 125 126 string BackgroundHorizontalPosition = ""; 127 string BackgroundVerticalPosition = ""; 128 129 string QuickmenuWidth = _data.QuickmenuWidth + "px"; 130 int JumbotronListCount = _data.JumbotronList.Count; 131 132 string JumbotronCarouselClass = JumbotronListCount != 1 ? "jumbotron__carousel" : "jumbotron__no-carousel"; 133 string JumbotronCarouselMobClass = JumbotronListCount != 1 ? "jumbotron__carousel-mob" : "jumbotron__no-carousel-mob"; 134 135 var paragraphID = Pageview.CurrentParagraph.ID; 136 var JumbotronBackgroundClassName = ""; 137 138 string ShoutboxBackgroundColor = _data.JumbotronConfiguration.ShoutboxBackgroundColor; 139 string ShoutBoxGradient = _data.JumbotronConfiguration.ShoutboxBackgroundGradient; 140 141 string ShoutboxBackgroundImage = _data.JumbotronConfiguration.ShoutboxBackgroundImage; 142 143 string QuickmenuBackgoundImage = _data.JumbotronConfiguration.QuickmenuBackgroundImage; 144 145 ShoutboxBackgroundColor = colorService.GetHexColor(Pageview.AreaID, ShoutboxBackgroundColor); 146 147 bool infiniteLoop = _data.Infinite; 148 bool autoPlay = _data.AutoPlay; 149 bool controls = _data.AddControls; 150 int duration = _data.Duration; 151 bool showDots = _data.ShowDots; // If slider or multicolumn has to be in container or full widthof the page 152 153 } 154 155 @if (!string.IsNullOrWhiteSpace(GetGlobalValue("Global:Device.IsDesktop"))) 156 { 157 <!-- 158 ***************************** 159 **** BEGIN DESKTOP SETUP **** 160 ***************************** 161 --> 162 <section class="jumbotron__playground jumbotron-mask jumbotron__playground-@paragraphID jumbotron--desktop jumboConfig--@_data.JumbotronConfigurationID @_data.CssClass @backgroundClass"> 163 164 <section class="@JumbotronCarouselClass" 165 data-dots="@showDots" 166 data-loop="@infiniteLoop" 167 data-autoplay="@autoPlay" 168 data-controls="@controls" 169 data-duration="@duration" 170 > 171 172 @foreach (var _item in _data.JumbotronList) 173 { 174 175 BackgroundHorizontalPosition = _item.BackgroundHorizontalPosition; 176 BackgroundVerticalPosition = _item.BackgroundVerticalPosition != "center" ? _item.BackgroundVerticalPosition : "middle"; 177 JumbotronBackgroundClassName = "jumbotron__image_background_" + paragraphID + "_" + _item.Id; 178 string jumbotronImage = _item.Image.Image.Replace("?x","&x"); 179 <div class="jumbotron @_item.CssClass" id="@_item.Id"> 180 181 <style> 182 183 @@media screen and (min-width: 994px) { 184 .@JumbotronBackgroundClassName { 185 background-image: url('/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Width=1200&height=@_data.JumbotronHeight&Quality=-1&Compression=100'); 186 } 187 } 188 189 @@media screen and (min-width: 1200px) { 190 .@JumbotronBackgroundClassName { 191 background-image: url('/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Width=2000&height=@_data.JumbotronHeight&Quality=-1&Compression=100'); 192 } 193 } 194 195 </style> 196 197 <figure class="jumbotron__image rellaxOff @BackgroundHorizontalPosition @BackgroundVerticalPosition @JumbotronBackgroundClassName"></figure> 198 199 @RenderShoutbox(_data, _item) 200 </div> 201 } 202 203 </section> 204 205 <!-- BEGIN QUICKMENU --> 206 207 @RenderQuickmenu(_data) 208 209 <!-- END QUICKMENU --> 210 211 <div class="jumbotron__shaper-container"><!--// 212 <svg width="100%" height="500" viewBox="0 0 1600 600" preserveAspectRatio="none"> 213 <defs> 214 <style> 215 .cls-1 { 216 fill: #cccccb; 217 } 218 219 .cls-2 { 220 fill: #fff; 221 opacity: 0.2; 222 } 223 224 </style> 225 </defs> 226 <title></title> 227 <path class="jumbotron__shaper-homepage" d="M2.59,495,237,553l122-48,132,54,360,16,262-48,176-90,154,120,112,12,206-102,159.79,65v71H1.56S1.31,493.72,2.59,495Z" /> 228 <polygon class="cls-2" points="359 505 317 599 491 559 359 505" /> 229 <polygon class="cls-2" points="1289 437 1443 557 1177 601 1289 437" /> 230 <polygon class="cls-2" points="1761 467 1696.44 604.28 1920.8 603 1920.8 532.03 1761 467" /> 231 </svg> 232 <svg width="100%" height="600" viewBox="0 0 2000 600" preserveAspectRatio="none"> 233 <clipPath id="myClip"> 234 <path class="cls-1" d="M1999.57,425c-123.24,53.94-329.82,96.6-581.35,119.35q33.6-6.59,65.7-14.19c104.82-24.86,197.33-58,276-98.78,21.37-11.08,49.25-53.51,49.25-53.51C1609,504.41,1328.64,545.78,1128.7,558.21c-31.7,2-62.42,3.29-91.8,4.12q-18.23.13-36.6.13c-81.34,0-160.65-1.95-237.08-5.65-16.15-1.19-25.6-1.31-25.6-1.31C416.39,538.15,148.8,489.67,1,425H.3V600h2000V425Z"></path> 235 </clipPath> 236 </svg> 237 //--> 238 239 <!--// 240 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" height="0" width="0" viewBox="0 0 2000 600" preserveAspectRatio=""> 241 <clipPath id="myClip"> 242 <path class="st0" d="M0,0v325h0.2C37.1,389.7,104,438.2,184.3,455.5c0,0,2.4,0.1,6.4,1.3c19.1,3.7,38.9,5.7,59.3,5.7 243 c3.1,0,6.1,0,9.2-0.1c7.3-0.8,15-2.1,23-4.1c50-12.4,120.1-53.8,170.1-180.3c0,0-7,42.4-12.3,53.5c-19.7,40.8-42.8,73.9-69,98.8 244 c-5.4,5.1-10.8,9.8-16.4,14.2C417.4,421.6,469,378.9,499.8,325h0.2V0H0z" /> 245 </clipPath> 246 </svg> 247 //--> 248 249 <!--<img src="https://images.unsplash.com/photo-1592006256125-1e7622ead3b0?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=400&fit=max&ixid=eyJhcHBfaWQiOjE0NTg5fQ" alt="Photographer in a market." height="1000" width="1000" /> 250 <svg width="0" height="0"> 251 <clipPath id="svgClip" clipPathUnits="objectBoundingBox"> 252 <path d="M0.75815095, 0.0579477769 C0.879893708, 0.187288937 0.902165272, 0.677587654 0.799370955, 0.785996249 C0.627963035, 0.966765889 0.26163708, 0.91434951 0.111342491,0.755791573 C-0.0332137967,0.603287436 -0.035795248,0.382887577 0.0965066612,0.173955315 C0.200239457,0.0101396315 0.648923894,-0.0580965318 0.75815095,0.0579477769 Z"></path> 253 </clipPath> 254 </svg> 255 <style> 256 .jumbotron-mask { 257 clip-path: url(#svgClip); 258 width: 18em; 259 height: 18em; 260 object-fit: cover; 261 display: block; 262 margin-right: auto; 263 margin-left: auto; 264 } 265 </style>--> 266 </div> 267 268 </section> 269 <!-- 270 *************************** 271 **** END DESKTOP SETUP **** 272 *************************** 273 --> 274 } 275 276 <style> 277 @_data.JumbotronConfiguration.GetJumbotronStylesheet() 278 </style> 279 280 @if (!string.IsNullOrWhiteSpace(GetGlobalValue("Global:Device.IsMobile")) || !string.IsNullOrWhiteSpace(GetGlobalValue("Global:Device.IsTablet"))) 281 { 282 <!-- 283 **************************** 284 **** BEGIN MOBILE SETUP **** 285 **************************** 286 --> 287 <section class="jumbotron__playground jumbotron__playground-@paragraphID jumbotron--mobile @_data.CssClass"> 288 289 <section class="@JumbotronCarouselMobClass" 290 data-dots="@showDots" 291 data-loop="@infiniteLoop" 292 data-autoplay="@autoPlay" 293 data-controls="@controls" 294 data-duration="@duration" 295 > 296 @{ int mobIndex = 0; } 297 @foreach (var _item in _data.JumbotronList) 298 { 299 300 BackgroundHorizontalPosition = _item.BackgroundHorizontalPosition; 301 BackgroundVerticalPosition = _item.BackgroundVerticalPosition != "center" ? _item.BackgroundVerticalPosition : "middle"; 302 string lazyLoad = mobIndex > 0 ? "loading='lazy'" : ""; 303 string jumbotronImage = _item.Image.Image.Replace("?x","&x"); 304 <div class="jumbotron @_item.CssClass"> 305 306 <!-- BEGIN IMAGE --> 307 308 <figure class="jumbotron__image-container"> 309 <picture class="jumbotron__image w-full h-full"> 310 <source media="(max-width: 400px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=-1&Width=400&Compression=90"> 311 <source media="(max-width: 500px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=-1&Width=500&Compression=90"> 312 <source media="(max-width: 600px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=-1&Width=600&Compression=90"> 313 <source media="(max-width: 700px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=-1&Width=700&Compression=90"> 314 <source media="(max-width: 994px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=-1&Width=994&Compression=90"> 315 <img src="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Width=400&Quality=-1&Compression=90" width="1980" height="500" alt="@_item.Image.ImageAlt" @lazyLoad /> 316 </picture> 317 </figure> 318 319 <!-- END IMAGE --> 320 <!-- BEGIN SHOUTBOX --> 321 322 @RenderShoutbox(_data, _item) 323 324 <!-- END SHOUTBOX --> 325 </div> 326 mobIndex++; 327 } 328 329 </section> 330 331 <!-- BEGIN QUICKMENU --> 332 333 @RenderQuickmenu(_data) 334 335 <!-- END QUICKMENU --> 336 337 </section> 338 <!-- 339 ************************ 340 *** END MOBILE SETUP *** 341 ************************ 342 --> 343 } 344 345 <style> 346 .jumbotron__playground, 347 .jumbotron { 348 height: auto; 349 } 350 351 @@media screen and (min-width: 991px){ 352 .jumbotron__playground-@paragraphID .jumbotron__carousel, 353 .jumbotron__playground-@paragraphID .jumbotron { 354 height: @JumbotronHeight; 355 overflow: hidden; 356 } 357 358 .jumbotron__playground-@paragraphID .jumbotron__container { 359 width: 100%; 360 } 361 362 .jumbotron__playground-@paragraphID .quickmenu { 363 width: @QuickmenuWidth; 364 } 365 366 .jumbotron__playground-@paragraphID .jumbotron__no-carousel, 367 .jumbotron__playground-@paragraphID .jumbotron__carousel { 368 width: calc(100% - @QuickmenuWidth); 369 370 } 371 372 .jumbotron__playground-@paragraphID .jumbotron__shoutbox { 373 background-color: @ShoutboxBackgroundColor; 374 @if (!string.IsNullOrWhiteSpace(ShoutBoxGradient)) { 375 376 <text> @ShoutBoxGradient </text> 377 378 } 379 @if (!string.IsNullOrWhiteSpace(ShoutboxBackgroundImage)) { 380 381 <text> 382 background-image: url('@ShoutboxBackgroundImage'); 383 </text> 384 385 } 386 } 387 388 .jumbotron__playground-@paragraphID .quickmenu { 389 @if (!string.IsNullOrWhiteSpace(QuickmenuBackgoundImage)) { 390 391 <text> 392 background-image: url('@QuickmenuBackgoundImage'); 393 </text> 394 395 } 396 } 397 398 399 } 400 </style> 401 402 @helper RenderShoutbox(JumbotronContainer _data, JumbotronListItem _item) 403 { 404 string ShoutboxFullHeightClass = _data.ShoutboxFullHeight ? "fullheight" : ""; 405 string ShoutboxBackgroundTransparentClass = _data.ShoutboxBackgroundTransparent ? "transparent" : ""; 406 407 string ShoutboxHorizontalPositionClass = _data.ShoutboxHorizontalPosition; 408 string ShoutboxVerticalPositionClass = _data.ShoutboxVerticalPosition != "center" ? @_data.ShoutboxVerticalPosition : "middle"; 409 410 <section class="jumbotron__container container @ShoutboxHorizontalPositionClass @ShoutboxVerticalPositionClass "> 411 412 @if (_item.HasShoutbox) 413 { 414 <div class="jumbotron__shoutbox @ShoutboxBackgroundTransparentClass @ShoutboxFullHeightClass"> 415 <section class="jumbotron__shoutbox-header"> 416 417 @_item.SubHeader.HeaderFormatted("jumbotron__subheading") 418 @_item.Header.HeaderFormatted("jumbotron__heading") 419 420 @if (!string.IsNullOrWhiteSpace(_item.Content.Text)) 421 { 422 <div class="jumbotron__shoutbox-intro">@_item.Content.Text</div> 423 } 424 425 @RenderButton(_item.Button, Pageview) 426 427 </section> 428 </div> 429 } 430 </section> 431 } 432 433 @helper RenderQuickmenu(JumbotronContainer _data) 434 { 435 int quickmenuWidth = _data.QuickmenuWidth; 436 437 if (quickmenuWidth > 0) 438 { 439 <div class="quickmenu"> 440 <h2 class="quickmenu__header">@_data.QuickmenuHeader</h2> 441 <nav class="quickmenu__list"> 442 @foreach (var _link in _data.QuickmenuLinks) 443 { 444 var highlightedClass = _link.Highlighted ? "highlighted" : ""; 445 var targetLink = _link.NewWindow ? "target='_blank'" : ""; 446 447 <a href="@_link.Link" class="quickmenu__link @highlightedClass" @targetLink> @_link.Name </a> 448 } 449 </nav> 450 </div> 451 } 452 } 453

Groeit jouw team wel mee?

De Brainport-regio groeit sneller dan ooit

Brainport is booming. Maar terwijl de markt versnelt, blijven technische en IT-vacatures bij veel bedrijven maandenlang openstaan. Grote namen trekken het schaarse talent aan, terwijl jij achterblijft met cruciale posities die niet ingevuld raken. En zelf internationaal werven? Dat kost bakken met tijd, geld en… woonruimte.

Zonder de juiste mensen komen je projecten stil te staan. En dat is precies wat je níet wilt.

WorldEmp heeft de oplossing voor het tekort

Remote engineer uit India biedt technische ondersteuning aan Nederlandse bedrijven via WorldEmp.com, gespecialiseerd in offshore engineering oplossingen.

Geen cv’s. Geen freelancers. Een collega die echt bij je past.

WorldEmp: een vaste kracht, fulltime en direct inzetbaar

Bij WorldEmp helpen we technische bedrijven in Brainport om vacatures duurzaam in te vullen – met hoogopgeleide professionals die fulltime op afstand meewerken. Van embedded engineers tot system architects: jij kiest wie je spreekt, wij zorgen dat de samenwerking werkt.

Binnen 2 tot 6 weken heb je een specialist aan boord die:

  • fulltime exclusief voor jouw team werkt

  • past bij jouw cultuur, communicatie en ritme

  • remote werkt vanuit een professionele, gefaciliteerde omgeving

Geen detacheringsfee, geen freelancers, geen project-outsourcing. Gewoon: een nieuwe collega, maar zonder verhuisgedoe.

Een aanpak die aansluit op jouw praktijk

Waarom bedrijven in Brainport kiezen voor WorldEmp

Onze oplossing is ontwikkeld voor bedrijven die vooruit willen, maar niet altijd kunnen opschalen met lokaal talent. Daarom bieden we:

  • Snel resultaat: binnen 2 tot 6 weken de juiste specialist in je team

  • Tot 50% lagere kosten dan traditionele detacheerders

  • Hoogwaardige kandidaten, zorgvuldig geselecteerd op kennis, persoonlijkheid en cultuurfit

  • Volledige ontzorging – van contract tot communicatie-inrichting

  • Een stabiele kracht in plaats van tijdelijke inhuur

En: we begrijpen je business. Technisch, nuchter en resultaatgericht.

De juiste collega voor jouw uitdaging

Voor sommige uitdagingen is een engineer nodig met een specifieke combinatie van kennis en ervaring. Wij denken graag met je mee om de juiste match te vinden.

Van aanvraag tot samenwerking in een paar weken

Onze werkwijze: eenvoudig en persoonlijk

Jij vertelt ons wat je zoekt. Wij vinden de juiste kandidaat. Binnen enkele dagen ontvang je een selectie van zorgvuldig gescreende professionals uit ons internationale netwerk.

Jij kiest met wie je in gesprek wilt – wij begeleiden alles daaromheen. Van het eerste contact tot onboarding en integratie in je team. Je nieuwe collega werkt remote, fulltime voor jouw organisatie, via een veilige werkomgeving met vaste contactmomenten. Geen papierwerk, geen geregel: alles wordt uit handen genomen. Zo houd jij focus op je project, niet op het proces.

Kennismaking & inzicht

We bespreken jouw technische uitdaging en bepalen samen het gewenste profiel, inclusief tools, systemen en vakspecialisatie.

Selectie & voorstel

Binnen enkele dagen ontvang je het profiel van een engineer met de juiste expertise en ervaring. Jij beslist of je een kennismaking wilt plannen.

Kick-off & onboarding

Na akkoord zorgen we voor een snelle onboarding. De engineer werkt in jouw systemen en processen, als volwaardig lid van je team.

Samenwerking & kwaliteit

Je blijft in regie. Wij faciliteren heldere communicatie, vaste contactmomenten en actieve kwaliteitscontrole via een dedicated aanspreekpunt.

De juiste mensen. Niet zomaar iemand.

Kwaliteit waarop je kunt vertrouwen

We geloven in duurzame samenwerking. Daarom gaan we verder dan alleen een cv-match. Onze kandidaten worden niet alleen geselecteerd op vakinhoudelijke kennis, maar ook op communicatieve vaardigheden, betrokkenheid en cultuurfit. We kennen onze mensen persoonlijk en zorgen voor een zorgvuldige introductie in jouw organisatie.

Met meer dan 20 jaar ervaring weten we wat werkt – en wat niet. Het resultaat? Een collega die bij je past, blijft en écht bijdraagt aan je team.

Wereldwijd netwerk, lokale betrokkenheid

To Top