FluentValidation – build strongly-typed validation rules in .NET


Install the FluentValidation .NET library for validation.

Below is our sample Contact class and its corresponding validator class.

The validator class needs to inherit AbstractValidator<Contact> and define the validation rules in the constructor using the RuleFor method.

Instantiate the validator class, and pass the object to be validated.

Here we have passed incorrect values for all the properties of the contact.

The ValidationResult holds all the validation error details.

Give it a try – https://docs.fluentvalidation.net/en/latest/index.html

Hope it helps..

using FluentValidation;
using FluentValidation.Results;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FluentValidator
{
    class Program
    {
        static void Main(string[] args)
        {
            var myContact = new Contact();
            var contactValidator = new ContactValidator();

            myContact.FirstName = "";
            myContact.LastName = "Lei";
            myContact.Email = "aa.gcom";
            myContact.Age = 10;
            myContact.FamilyStatusCode = (FamilyStatusCode)Enum.Parse(typeof(FamilyStatusCode),"5");

            ValidationResult result = contactValidator.Validate(myContact);
        }
    }

    class Contact
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
        public int Age { get; set; }
        public FamilyStatusCode FamilyStatusCode { get; set; }
    }

    enum FamilyStatusCode
    {
        Single = 1,
        Married = 2,
        Divorced = 3,
        Widowed = 4
    }

    class ContactValidator : AbstractValidator<Contact>
    {
       public ContactValidator()
        {
            // First Name should not be null
            RuleFor(contact => contact.FirstName).NotEmpty();
            // Last Name should not be null and minimum length should be 4
            RuleFor(contact => contact.LastName).NotNull().MinimumLength(4);
            // Email Address Validation
            RuleFor(contact => contact.Email).EmailAddress();
            // Age should be between 18 to 60
            RuleFor(contact => contact.Age).ExclusiveBetween(18, 60);
            // Family Status Code Enum should be a valid value
            RuleFor(contact => contact.FamilyStatusCode).IsInEnum();

        }
    }
}
Advertisements

Refresh button missing on Roll-Up fields in D365 UCI? Quick Tip.


priyeshwagh777's avatarD365 Demystified

As we are transitioning to the Unified Interface, some visual cues are a little misplaced or say, hidden.

If your Roll-up field on the Classic UI appeared like this where you could simply click on refresh and update the Roll-up field

classicRefresh

It doesn’t seem to be the case in terms of UCI-
missinginUCI

It’s Hidden!

So, simply click on the Calculator icon –
clickToReveal
And the Recalculate button will be revealed which updates the value
recalculate
And results into the below in my case –
updatedNote: Toggling the calculator icon will reveal/hide the button.

Hope this quick tip helps!!

View original post

Import from Excel / Import Wizard updates Record Created On (overriddencreatedon) – Dynamics 365


When we are creating new records and need the created on field to take the value provided instead of system generated, we can map it to the Record Created On field during Import from Excel option.

In fact in the Import Data Wizard also, although it doesn’t show the Record Created On field for mapping, we can map to Created On field and the behavior will be same. (and in the case of the Import from Excel in the Grid, we do not get the Created On field for mapping)

Below is the record we have created through Import Data Wizard, and we can see the values of Created on and Record Created On for it.

Read more –

https://debajmecrm.com/override-createdon-modifiedon-createdby-modifiedby-in-dynamics-365-crm-crm-tips-from-the-vault/

https://nishantrana.me/2018/10/16/using-overriddencreatedon-or-record-created-on-field-to-update-created-on-field-in-dynamics-365/

Hope it helps..

 

Advertisements

Anonymous Visitor tracking behavior in Dynamics 365 Marketing


Suppose, we have the below page opened in the browser, which has an embedded marketing form in it.

Opening the marketing website record associated with the marketing form, we can see the anonymous visit being tracked.

Here the user had opened the page a couple of times.

Form Visits also have the corresponding details.

Form submission – No records right now as the form hasn’t been submitted by the visitor on the page.

Now let us submit the form

After the successful submission of the form which created the contact record, we can now see a new record added on the website visitors

as well as all the previous anonymous records also updated with the same contact.

Same for Form Visits

And as expected a new form submission record.

Now any future visit to the page gets tracked with the Contact created for that user.

In the contact record, also all the website visits get associated.

To read more about it – https://learn.microsoft.com/en-us/dynamics365/marketing/known-issues#websites

To learn more about Dynamics 365 Marketing – https://meganvwalker.com/category/dynamics-marketing/

Hope it helps..

When to use Event Grid and when to use Service Bus


Varun Kumar's avatarCloud Avenue

Asynchronous messaging and Event driven architectures are the building blocks of a truly scalable system, where the services can talk to each other and can scale up and down independently. Where, the outage of one service do not impact the working of others.


View original post 876 more words

How to – Use Personalized page content in Dynamics 365 Marketing


Continuing our previous post – https://nishantrana.me/2022/11/17/how-to-use-page-personalization-in-dynamics-365-marketing-2/, in this post we’d see the personalized page content works across the pages in the site.

Suppose we have the following embedded marketing form, submitted by the user with Remember Me checked (required for Personalized Page as well as Prefill to work)

Next time when the user visits the page, using the Personalized Page’s Script, we can have this value fetched from the cookie as shown below.

Here we can use the same personalized page script on other pages in the same authenticated domain/website to retrieve the values from the cookie.

For that, we just need to have the website’s div tag to be placed on that page, as shown below. We can get from that from the website record created and it will track the visit as well.

divweb

Hope it helps..

Advertisements

Nishant Rana's Weblog

Everything related to Microsoft .NET Technology

Skip to content ↓