// POST: api/Email
        public IHttpActionResult Post(EmailRequest emailRequest)
        {
            try
            {
                //Build the request model for the service to send the email
                PigeonRequest  pigeonRequest  = EmailFactory.CreatePigeonRequest(emailRequest);
                PigeonResponse pigeonResponse = _emailProvider.SendAFitPigeon(pigeonRequest);

                if (pigeonResponse.Success)
                {
                    //Create the Api response for the successful post request
                    EmailResponse emailResponse = EmailFactory.CreateEmailResponse(pigeonResponse);

                    //Save to database if the email is sent successfully
                    _emailSavingService = new EmailSavingService(_commonProvider, _databaseRepoProvider,
                                                                 emailRequest, emailResponse);

                    //request = CommonUtility.SerializeObject(emailRequest);
                    //response = CommonUtility.SerializeObject(emailResponse);
                    //var isSaved = databaseStuff.SaveaSomethingAwesome(request, response, 1, 2);

                    return(Ok(emailResponse));
                }
                else
                {
                    return(BadRequest("Response was not a success: " + pigeonResponse.Message));
                }
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
        //[PrincipalPermission(SecurityAction.Demand, Role = "admin")]
        public EmailResponse NotifymeThankyoubyEmail(EmailRequest emailRequest)
        {
            EmailResponse emailResponse = new EmailResponse();
            DatabaseStuff databaseStuff = new DatabaseStuff();
            string        request, response;

            try
            {
                #region for wcf basic auth services
                var hostIdentity    = WindowsIdentity.GetCurrent().Name;
                var primaryIdentity = ServiceSecurityContext.Current.PrimaryIdentity.Name;
                var windowsIdentity = ServiceSecurityContext.Current.WindowsIdentity.Name;
                var threadIdentity  = Thread.CurrentPrincipal.Identity.Name;
                //var isAdmin = Thread.CurrentPrincipal.IsInRole("admin");
                #endregion

                var pigeonRequest = EmailFactory.CreatePigeonRequest(emailRequest);

                var pigeonResponse = notifyByPigeon.SendAFitPigeon(pigeonRequest);

                if (pigeonResponse.Success)
                {
                    emailResponse = EmailFactory.CreateEmailResponse(pigeonResponse);

                    request  = CommonUtility.SerializeObject(emailRequest);
                    response = CommonUtility.SerializeObject(emailResponse);

                    var isSaved = databaseStuff.SaveaSomethingAwesome(request, response, 1);
                }
            }
            catch (Exception ex)
            {
                emailResponse.Success           = false;
                emailResponse.Message           = "An error has occurred: " + ex.Message;
                emailResponse.SubmittedDateTime = null;
            }

            return(emailResponse);
        }