public WebValidationServiceController(SPConnection sourceCreds, SPConnection targetCreds, IUserMapping userMapping, ILogger logger)
        {
            var container = new UnityContainer();

            container.RegisterType <ISharePointRepository, SharePointRepository>();
            this.SharePointRepository = container.Resolve <ISharePointRepository>(
                new ParameterOverrides
            {
                { "logger", logger }
            });

            container.RegisterType <ISharePointRepository2007, SharePointRepository2007>();
            this.SharePointRepository2007 = container.Resolve <ISharePointRepository2007>(
                new ParameterOverrides
            {
                { "logger", logger }
            });

            this.SourceSiteCreds = sourceCreds;
            this.TargetSiteCreds = targetCreds;

            if (sourceCreds.SiteType == SiteType.WSS)
            {
                this.SourceWSSContext = this.SharePointRepository2007.GetSPContext(SourceSiteCreds.SiteUrl, SourceSiteCreds.UserName, SourceSiteCreds.Password);
            }
            else if (sourceCreds.SiteType == SiteType.SharePointOnPremises)
            {
                this.SourceClientContext = this.SharePointRepository.GetSP2013Context(SourceSiteCreds.SiteUrl, SourceSiteCreds.UserName, SourceSiteCreds.Password, SourceSiteCreds.Domain);
            }
            else
            {
                this.SourceClientContext = this.SharePointRepository.GetSPOContext(SourceSiteCreds.SiteUrl, SourceSiteCreds.UserName, SourceSiteCreds.Password);
            }

            if (targetCreds.SiteType == SiteType.WSS)
            {
                this.TargetWSSContext = this.SharePointRepository2007.GetSPContext(TargetSiteCreds.SiteUrl, TargetSiteCreds.UserName, TargetSiteCreds.Password);
            }
            else if (targetCreds.SiteType == SiteType.SharePointOnPremises)
            {
                this.TargetClientContext = this.SharePointRepository.GetSP2013Context(TargetSiteCreds.SiteUrl, TargetSiteCreds.UserName, TargetSiteCreds.Password, TargetSiteCreds.Domain);
            }
            else
            {
                this.TargetClientContext = this.SharePointRepository.GetSPOContext(TargetSiteCreds.SiteUrl, TargetSiteCreds.UserName, TargetSiteCreds.Password);
            }

            this.UserMapping = userMapping;
            this.logger      = logger;
        }
 public WSSContext GetSPContext(string siteUrl, string user, string password, string domain = "")
 {
     SPContext = new WSSContext(siteUrl, user, password, domain);
     return(SPContext);
 }