예제 #1
0
 public ActionResult Compatibility(CompatibilityModel model)
 {
     if (model.NineStarKiModel1?.PersonModel != null && model.NineStarKiModel2?.PersonModel != null)
     {
         model = _nineStarKiService.CalculateCompatibility(model.NineStarKiModel1.PersonModel, model.NineStarKiModel2.PersonModel, model.IsHideSexualChemistry);
     }
     return(View("Compatibility", model));
 }
예제 #2
0
        public static void SetLastCompatibility(CompatibilityModel model)
        {
            Base.WebApplication.Helpers.SessionHelper.SetValue(Constants.SessionConstants.LastCompatibilityProfileDateOfBirth1, model.NineStarKiModel1.PersonModel.DateOfBirth.ToString(Constants.FormatConstants.SessionDateTimeFormat));
            Base.WebApplication.Helpers.SessionHelper.SetValue(Constants.SessionConstants.LastCompatibilityProfileDateOfBirth2, model.NineStarKiModel2.PersonModel.DateOfBirth.ToString(Constants.FormatConstants.SessionDateTimeFormat));
            Base.WebApplication.Helpers.SessionHelper.SetValue(Constants.SessionConstants.LastCompatibilityProfileGender1, model.NineStarKiModel1.PersonModel.Gender);
            Base.WebApplication.Helpers.SessionHelper.SetValue(Constants.SessionConstants.LastCompatibilityProfileGender2, model.NineStarKiModel2.PersonModel.Gender);
            Base.WebApplication.Helpers.SessionHelper.SetValue(Constants.SessionConstants.LastCompatibilityProfileName1, model.NineStarKiModel1.PersonModel.Name);
            Base.WebApplication.Helpers.SessionHelper.SetValue(Constants.SessionConstants.LastCompatibilityProfileName2, model.NineStarKiModel2.PersonModel.Name);
            Base.WebApplication.Helpers.SessionHelper.SetValue(Constants.SessionConstants.LastCompatibilityHideSexuality, model.IsHideSexualChemistry);

            Base.WebApplication.Helpers.SessionHelper.SetValue(Constants.SessionConstants.IsRetrieveCompatibility, true);
            Base.WebApplication.Helpers.SessionHelper.SetValue(Constants.SessionConstants.CompatibilityStoredOn, DateTime.Today.ToString(Constants.FormatConstants.SessionDateTimeFormat));
        }
예제 #3
0
        public CompatibilityModel CalculateCompatibility(PersonModel personModel1, PersonModel personModel2, bool isHideSexuality)
        {
            var nineStarKiModel1 = CalculateNineStarKiProfile(personModel1, true);
            var nineStarKiModel2 = CalculateNineStarKiProfile(personModel2, true);

            var model = new CompatibilityModel(nineStarKiModel1, nineStarKiModel2)
            {
                IsProcessed = true,
                IsUpgradeRequired = true,
                IsHideSexualChemistry = isHideSexuality
            };

            if (_authentication.IsAuthenticated)
            {
                if (_roles.CurrentUserIsInRoles(RoleNames.Administrators) ||
                    _membershipService.IsCompleteRelationshipCompatibilityReading(_authentication.CurrentUserId,
                        personModel1, personModel2, isHideSexuality))
                {
                    model.IsUpgradeRequired = false;
                }
            }

            return model;
        }
예제 #4
0
        public override async Task Invoke(IOwinContext context)
        {
            if (context.RespondNotModified())
            {
                return;
            }

            var q               = context.Request.Query;
            var hash            = q["hash"];
            var source          = q["source"];
            var packageId       = q["packageId"];
            var version         = q["version"];
            var targetFramework = q["targetFramework"];

            var model = new CompatibilityModel
            {
                PackageSelector = new PackageSelectorModel
                {
                    DefaultSource          = source,
                    DefaultPackageId       = packageId,
                    DefaultVersion         = version,
                    DefaultTargetFramework = targetFramework
                }
            };
            var statusCode = 200;

            try
            {
                PackageFolderReader package;

                if (string.IsNullOrEmpty(hash))
                {
                    if (string.IsNullOrWhiteSpace(packageId))
                    {
                        // Homepage of NuGetCalc Online
                        await context.Response.View(new Views.CompatibilityStatic(), model.PackageSelector).ConfigureAwait(false);

                        return;
                    }
                    if (string.IsNullOrWhiteSpace(targetFramework))
                    {
                        statusCode  = 400;
                        model.Error = "Target Framework is required.";
                        goto RESPOND;
                    }

                    NuGetVersion nugetVersion = null;
                    if (!string.IsNullOrWhiteSpace(version) && !NuGetVersion.TryParse(version, out nugetVersion))
                    {
                        statusCode  = 400;
                        model.Error = "Version is not valid as NuGetVersion.";
                        goto RESPOND;
                    }

                    var packageDir = NuGetUtility.GetPackage(source, packageId, nugetVersion).Result; // avoid compile error on mono
                    package = new PackageFolderReader(packageDir);
                }
                else
                {
                    package = new PackageFolderReader(NuGetUtility.GetUploadedPackage(hash));
                    model.PackageSelector.UploadHash      = hash;
                    model.PackageSelector.UploadedPackage = package.GetIdentity();
                }

                using (package)
                {
                    context.Request.CallCancelled.ThrowIfCancellationRequested();

                    var identity = package.GetIdentity();
                    model.PackageSelector.DefaultPackageId = identity.Id;
                    model.PackageSelector.DefaultVersion   = identity.Version.ToString();
                    // NuGetFramework.Parse will throw only ArgumentNullException
                    var nugetFramework = NuGetFramework.Parse(targetFramework);

                    var referenceItems = NuGetUtility.FindMostCompatibleReferenceGroup(package, nugetFramework);
                    if (referenceItems != null)
                    {
                        model.ReferenceAssemblies = referenceItems.Items;
                    }

                    var depenencyItems = NuGetUtility.FindMostCompatibleDependencyGroup(package, nugetFramework);
                    if (depenencyItems != null)
                    {
                        model.Dependencies = depenencyItems.Packages;
                    }
                }

                GC.Collect(); // to release a handle of nuspec file
            }
            catch (NuGetUtilityException ex)
            {
                statusCode  = 500;
                model.Error = ex.Message;
                if (ex.InnerException != null)
                {
                    model.Exception = ex.InnerException;
                }
            }

RESPOND:
            context.Response.StatusCode = statusCode;
            await context.Response.View(new Views.Compatibility(), model).ConfigureAwait(false);
        }