Error executing template "Designs/MooijVerf_generated/Paragraph/JumbotronContainer.cshtml" System.Data.SqlClient.SqlException (0x80131904): Violation of PRIMARY KEY constraint 'PK__ItemType__3214EC0789BE1AE4'. Cannot insert duplicate key in object 'dbo.ItemType_JumbotronConfiguration'. The duplicate key value is (771597). 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_0745caeb530247d2b72fb3b2778f99e6.Execute() in D:\dynamicweb.net\Solutions\Mooij\Files\Templates\Designs\MooijVerf_generated\Paragraph\JumbotronContainer.cshtml:line 264 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:4ec8fffb-a293-4d2b-9f4c-8c1b6a0d3cc7 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 } 148 149 <!-- 150 ***************************** 151 **** BEGIN DESKTOP SETUP **** 152 ***************************** 153 --> 154 155 <section class="jumbotron__playground jumbotron-mask jumbotron__playground-@paragraphID jumbotron--desktop jumboConfig--@_data.JumbotronConfigurationID @_data.CssClass @backgroundClass"> 156 157 <section class="@JumbotronCarouselClass"> 158 159 @foreach (var _item in _data.JumbotronList) 160 { 161 162 BackgroundHorizontalPosition = _item.BackgroundHorizontalPosition; 163 BackgroundVerticalPosition = _item.BackgroundVerticalPosition != "center" ? _item.BackgroundVerticalPosition : "middle"; 164 JumbotronBackgroundClassName = "jumbotron__image_background_" + paragraphID + "_" + _item.Id; 165 string jumbotronImage = _item.Image.Image.Replace("?x","&x"); 166 <div class="jumbotron @_item.CssClass" id="@_item.Id"> 167 168 <style> 169 170 @@media screen and (min-width: 994px) { 171 .@JumbotronBackgroundClassName { 172 background-image: url('/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Width=1200&height=@_data.JumbotronHeight&Quality=-1&Compression=100'); 173 } 174 } 175 176 @@media screen and (min-width: 1200px) { 177 .@JumbotronBackgroundClassName { 178 background-image: url('/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Width=2000&height=@_data.JumbotronHeight&Quality=-1&Compression=100'); 179 } 180 } 181 182 </style> 183 184 <figure class="jumbotron__image rellaxOff @BackgroundHorizontalPosition @BackgroundVerticalPosition @JumbotronBackgroundClassName"></figure> 185 186 @RenderShoutbox(_data, _item) 187 </div> 188 } 189 190 </section> 191 192 <!-- BEGIN QUICKMENU --> 193 194 @RenderQuickmenu(_data) 195 196 <!-- END QUICKMENU --> 197 198 <div class="jumbotron__shaper-container"><!--// 199 <svg width="100%" height="500" viewBox="0 0 1600 600" preserveAspectRatio="none"> 200 <defs> 201 <style> 202 .cls-1 { 203 fill: #cccccb; 204 } 205 206 .cls-2 { 207 fill: #fff; 208 opacity: 0.2; 209 } 210 211 </style> 212 </defs> 213 <title></title> 214 <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" /> 215 <polygon class="cls-2" points="359 505 317 599 491 559 359 505" /> 216 <polygon class="cls-2" points="1289 437 1443 557 1177 601 1289 437" /> 217 <polygon class="cls-2" points="1761 467 1696.44 604.28 1920.8 603 1920.8 532.03 1761 467" /> 218 </svg> 219 <svg width="100%" height="600" viewBox="0 0 2000 600" preserveAspectRatio="none"> 220 <clipPath id="myClip"> 221 <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> 222 </clipPath> 223 </svg> 224 //--> 225 226 <!--// 227 <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=""> 228 <clipPath id="myClip"> 229 <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 230 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 231 c-5.4,5.1-10.8,9.8-16.4,14.2C417.4,421.6,469,378.9,499.8,325h0.2V0H0z" /> 232 </clipPath> 233 </svg> 234 //--> 235 236 <!--<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" /> 237 <svg width="0" height="0"> 238 <clipPath id="svgClip" clipPathUnits="objectBoundingBox"> 239 <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> 240 </clipPath> 241 </svg> 242 <style> 243 .jumbotron-mask { 244 clip-path: url(#svgClip); 245 width: 18em; 246 height: 18em; 247 object-fit: cover; 248 display: block; 249 margin-right: auto; 250 margin-left: auto; 251 } 252 </style>--> 253 </div> 254 255 </section> 256 257 <!-- 258 *************************** 259 **** END DESKTOP SETUP **** 260 *************************** 261 --> 262 263 <style> 264 @_data.JumbotronConfiguration.GetJumbotronStylesheet() 265 </style> 266 267 <!-- 268 **************************** 269 **** BEGIN MOBILE SETUP **** 270 **************************** 271 --> 272 273 <section class="jumbotron__playground jumbotron__playground-@paragraphID jumbotron--mobile @_data.CssClass"> 274 275 <section class="@JumbotronCarouselMobClass"> 276 @{ int mobIndex = 0; } 277 @foreach (var _item in _data.JumbotronList) 278 { 279 280 BackgroundHorizontalPosition = _item.BackgroundHorizontalPosition; 281 BackgroundVerticalPosition = _item.BackgroundVerticalPosition != "center" ? _item.BackgroundVerticalPosition : "middle"; 282 string lazyLoad = mobIndex > 0 ? "loading='lazy'" : ""; 283 string jumbotronImage = _item.Image.Image.Replace("?x","&x"); 284 <div class="jumbotron @_item.CssClass"> 285 286 <!-- BEGIN IMAGE --> 287 288 <figure class="jumbotron__image-container"> 289 <picture class="jumbotron__image w-full h-full"> 290 <source media="(max-width: 400px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=-1&Width=400&Compression=90"> 291 <source media="(max-width: 500px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=-1&Width=500&Compression=90"> 292 <source media="(max-width: 600px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=-1&Width=600&Compression=90"> 293 <source media="(max-width: 700px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=-1&Width=700&Compression=90"> 294 <source media="(max-width: 994px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=-1&Width=994&Compression=90"> 295 <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 /> 296 </picture> 297 </figure> 298 299 <!-- END IMAGE --> 300 <!-- BEGIN SHOUTBOX --> 301 302 @RenderShoutbox(_data, _item) 303 304 <!-- END SHOUTBOX --> 305 </div> 306 mobIndex++; 307 } 308 309 </section> 310 311 <!-- BEGIN QUICKMENU --> 312 313 @RenderQuickmenu(_data) 314 315 <!-- END QUICKMENU --> 316 317 </section> 318 319 <!-- 320 ************************ 321 *** END MOBILE SETUP *** 322 ************************ 323 --> 324 325 <style> 326 .jumbotron__playground, 327 .jumbotron { 328 height: auto; 329 } 330 331 @@media screen and (min-width: 991px){ 332 .jumbotron__playground-@paragraphID .jumbotron__carousel, 333 .jumbotron__playground-@paragraphID .jumbotron { 334 height: @JumbotronHeight; 335 overflow: hidden; 336 } 337 338 .jumbotron__playground-@paragraphID .jumbotron__container { 339 width: 100%; 340 } 341 342 .jumbotron__playground-@paragraphID .quickmenu { 343 width: @QuickmenuWidth; 344 } 345 346 .jumbotron__playground-@paragraphID .jumbotron__no-carousel, 347 .jumbotron__playground-@paragraphID .jumbotron__carousel { 348 width: calc(100% - @QuickmenuWidth); 349 350 } 351 352 .jumbotron__playground-@paragraphID .jumbotron__shoutbox { 353 background-color: @ShoutboxBackgroundColor; 354 @if (!string.IsNullOrWhiteSpace(ShoutBoxGradient)) { 355 356 <text> @ShoutBoxGradient </text> 357 358 } 359 @if (!string.IsNullOrWhiteSpace(ShoutboxBackgroundImage)) { 360 361 <text> 362 background-image: url('@ShoutboxBackgroundImage'); 363 </text> 364 365 } 366 } 367 368 .jumbotron__playground-@paragraphID .quickmenu { 369 @if (!string.IsNullOrWhiteSpace(QuickmenuBackgoundImage)) { 370 371 <text> 372 background-image: url('@QuickmenuBackgoundImage'); 373 </text> 374 375 } 376 } 377 378 379 } 380 </style> 381 382 @helper RenderShoutbox(JumbotronContainer _data, JumbotronListItem _item) 383 { 384 string ShoutboxFullHeightClass = _data.ShoutboxFullHeight ? "fullheight" : ""; 385 string ShoutboxBackgroundTransparentClass = _data.ShoutboxBackgroundTransparent ? "transparent" : ""; 386 387 string ShoutboxHorizontalPositionClass = _data.ShoutboxHorizontalPosition; 388 string ShoutboxVerticalPositionClass = _data.ShoutboxVerticalPosition != "center" ? @_data.ShoutboxVerticalPosition : "middle"; 389 390 <section class="jumbotron__container container @ShoutboxHorizontalPositionClass @ShoutboxVerticalPositionClass "> 391 392 @if (_item.HasShoutbox) 393 { 394 <div class="jumbotron__shoutbox @ShoutboxBackgroundTransparentClass @ShoutboxFullHeightClass"> 395 <section class="jumbotron__shoutbox-header"> 396 397 @_item.SubHeader.HeaderFormatted("jumbotron__subheading") 398 @_item.Header.HeaderFormatted("jumbotron__heading") 399 400 @if (!string.IsNullOrWhiteSpace(_item.Content.Text)) 401 { 402 <div class="jumbotron__shoutbox-intro">@_item.Content.Text</div> 403 } 404 405 @RenderButton(_item.Button, Pageview) 406 407 </section> 408 </div> 409 } 410 </section> 411 } 412 413 @helper RenderQuickmenu(JumbotronContainer _data) 414 { 415 int quickmenuWidth = _data.QuickmenuWidth; 416 417 if (quickmenuWidth > 0) 418 { 419 <div class="quickmenu"> 420 <h2 class="quickmenu__header">@_data.QuickmenuHeader</h2> 421 <nav class="quickmenu__list"> 422 @foreach (var _link in _data.QuickmenuLinks) 423 { 424 var highlightedClass = _link.Highlighted ? "highlighted" : ""; 425 var targetLink = _link.NewWindow ? "target='_blank'" : ""; 426 427 <a href="@_link.Link" class="quickmenu__link @highlightedClass" @targetLink> @_link.Name </a> 428 } 429 </nav> 430 </div> 431 } 432 } 433
Op naar de honderd
Over ons
Mooij Verf is van lokale groothandel in plantaardige oliën uitgegroeid tot verfgroothandelsorganisatie met landelijke dekking. Als leverancier en adviseur voor de schildersbranche, verfspeciaalzaken, de bouw en vastgoedbeheerders biedt het hedendaagse Mooij Verf een breed palet aan diensten en producten. Gebruik makend van online mogelijkheden en met inzet van praktische oplossingen en maatwerk. Zo komt de vakschilder beter uit de verf!
Kwaliteit, kennis en ervaring
De ideale partner
Op het gebied van verf en verfsystemen heeft Mooij Verf een schat aan kennis en ervaring opgedaan. En die kwaliteit delen wij graag, aan de balie, bij de koffie of ter plekke op de klus. Voor vastgoedbeheerders, woningbouwcorporaties, instellingen en dergelijke biedt Mooij Verf met de ijzersterke buitendienst een betrouwbare partner. Meedenkend en oplossend vermogen geeft onze specialisten oor voor uitdagingen en oog voor kostenbeheersing.
Ambachtelijke waarden
Moderne middelen
Schilderen is een ambacht, overgebracht van generatie op generatie. Technieken en gereedschappen blijken de stabiele factoren binnen het vak. Fabrikanten ontwikkelen de producten naar een steeds hoger en duurzamer niveau. Mooij Verf onderscheidt zich door blijvend te innoveren in service en dienstverlening. Volgt productontwikkelingen op de voet en beantwoordt de vraag van de markt. Met snelheid, zowel in levering als online gemak, als speerpunt.
Schone missie
Milieubewust
Mooij Verf hecht veel waarde aan duurzaamheid en voert hierop actief beleid. Enerzijds door innovatieve productlijnen aan het assortiment toe te voegen. Waarbij gelet wordt op de winning en verwerking van grondstoffen, maar ook de toepassing juist duurzaamheid biedt. Organisatorisch bekorten wij de ecologische footprint door een verantwoord afvalbeleid en efficiënte vervoersbewegingen, waarin elektra steeds prominenter vertegenwoordigd is.
Persoonlijk account
Bestel in de webshop
De webshop omvat alle producten voor de dagelijkse schilderspraktijk. Een brede assortiment aan verven en lakken, coatings en kitten, vullers en verbeteraars, gereedschappen en installaties. Ook bieden wij online een keur aan woondecoratie. De particuliere klantreis kan beginnen, de prijzen worden pas getoond aan de professional.