public async Task <PostResponseModel> RegisterVendor(RegisterVendorRequestModel vendorDetailsRequestModel)
        {
            PostResponseModel postResponseModel = new PostResponseModel();

            RegisterVendor registerUser = new RegisterVendor()
            {
                VendorName     = vendorDetailsRequestModel.VendorName,
                VendorEmail    = vendorDetailsRequestModel.VendorEmail,
                VendorMobile   = vendorDetailsRequestModel.VendorMobile,
                VendorLandline = vendorDetailsRequestModel.VendorLandline,
                AddressLine    = vendorDetailsRequestModel.AddressLine,
                City           = vendorDetailsRequestModel.City,
                State          = vendorDetailsRequestModel.State,
                PinCode        = vendorDetailsRequestModel.PinCode
            };

            var registerVendorResponse = await _vendorAuthenticationRepository.RegisterVendor(registerUser);

            postResponseModel.IsAlreadyExists = registerVendorResponse.IsUserExists;

            if (!postResponseModel.IsAlreadyExists && registerVendorResponse.Success)
            {
                var emailBody    = "Hello !!!";
                var emailSubject = "Vendor Register";

                var emailResponse = await _messageSenderUtility.SendEmail(emailBody, emailSubject, vendorDetailsRequestModel.VendorEmail);

                postResponseModel.Success = emailResponse.IsEmailSend;

                //Log email
                EmailLogs emailLogDetails = new EmailLogs()
                {
                    FromEmailAddress = emailResponse.FromEmailAddress,
                    ToEmailAddress   = emailResponse.ToEmailAddress,
                    Subject          = emailSubject,
                    Body             = emailBody,
                    IsProduction     = emailResponse.IsProductionEnvironment,
                    IsSend           = emailResponse.IsEmailSend,
                    ApplicationId    = (int)ApplicationType.Vendor,
                    FromUserType     = "System",
                    ToUserType       = "Vendor",
                    ToUserId         = registerVendorResponse.Content.VendorId
                };

                await _loggingRepository.LogEmailTransaction(emailLogDetails);
            }
            else
            {
                postResponseModel.Success = registerVendorResponse.Success;
            }

            return(postResponseModel);
        }
        public async Task <IActionResult> RegisterVendor(RegisterVendorRequestModel vendorDetailsRequestModel)
        {
            ValidationException validationException = new ValidationException();

            validationException.Add(nameof(vendorDetailsRequestModel.VendorName), vendorDetailsRequestModel.VendorName, ValidationReason.Required);
            validationException.Add(nameof(vendorDetailsRequestModel.VendorEmail), vendorDetailsRequestModel.VendorEmail, ValidationReason.Required);
            validationException.Add(nameof(vendorDetailsRequestModel.VendorMobile), vendorDetailsRequestModel.VendorMobile, ValidationReason.Required);
            validationException.Add(nameof(vendorDetailsRequestModel.AddressLine), vendorDetailsRequestModel.AddressLine, ValidationReason.Required);
            validationException.Add(nameof(vendorDetailsRequestModel.City), vendorDetailsRequestModel.City, ValidationReason.Required);
            validationException.Add(nameof(vendorDetailsRequestModel.State), vendorDetailsRequestModel.State, ValidationReason.Required);
            validationException.Add(nameof(vendorDetailsRequestModel.PinCode), vendorDetailsRequestModel.PinCode, ValidationReason.Required);
            validationException.Add(nameof(vendorDetailsRequestModel.VendorEmail), vendorDetailsRequestModel.VendorEmail, ValidationReason.EmailFormat);
            validationException.Add(nameof(vendorDetailsRequestModel.VendorMobile), vendorDetailsRequestModel.VendorMobile, ValidationReason.PhoneNumber);
            validationException.Add(nameof(vendorDetailsRequestModel.PinCode), vendorDetailsRequestModel.PinCode, ValidationReason.PinCode);

            if (validationException.HasErrors)
            {
                throw validationException;
            }

            return(Ok(await _vendorAuthenticationManager.RegisterVendor(vendorDetailsRequestModel)));
        }