public static void Delete(FinancialProduct financialProduct)
        {
            var productStatuses = financialProduct.ProductStatus;
            var productFeatures = financialProduct.ProductFeatureApplicabilities;
            var productRequirements = financialProduct.ProductRequiredDocuments;
            var prodCategoryClass = financialProduct.ProductCategoryClassifications;

            foreach (var productStatus in productStatuses.ToList())
            {
                Context.DeleteObject(productStatus);
            }

            foreach (var productFeature in productFeatures.ToList())
            {
                if (productFeature.Fee != null)
                    Context.DeleteObject(productFeature.Fee);

                if (productFeature.LoanTerm != null)
                    Context.DeleteObject(productFeature.LoanTerm);

                Context.ProductFeatureApplicabilities.DeleteObject(productFeature);
            }

            foreach (var document in productRequirements.ToList())
            {
                Context.DeleteObject(document);
            }

            foreach (var category in prodCategoryClass.ToList())
            {
                Context.DeleteObject(category);
            }

            Context.DeleteObject(financialProduct);
        }
 public static bool CheckIfProductIsUsed(FinancialProduct product)
 {
     var used = Context.ApplicationItems.Where(entity =>
         entity.ProductFeatureApplicability.FinancialProductId == product.Id);
     if (used.Count() != 0)
         return true;
     else
         return false;
 }
Example #3
0
 public static ProductStatu ChangeStatus(FinancialProduct financialProduct, ProductStatusType statusTo, DateTime today)
 {
     ProductStatu status = GetActive(financialProduct);
     if (CanChangeStatusTo(financialProduct, statusTo))
     {
         return CreateOrUpdateCurrent(financialProduct, statusTo, today);
     }
     return status;
 }
        public static ProductFeatureApplicability Create(ProductFeature feature, FinancialProduct financialProduct, DateTime today)
        {
            ProductFeatureApplicability applicability = new ProductFeatureApplicability();
            applicability.FinancialProduct = financialProduct;
            applicability.EffectiveDate = today;
            applicability.ProductFeature = feature;

            Context.ProductFeatureApplicabilities.AddObject(applicability);
            return applicability;
        }
        public static ProductFeatureApplicability CreateOrUpdate(ProductFeature feature, FinancialProduct financialProduct, DateTime today)
        {
            ProductFeatureApplicability current = GetActive(feature, financialProduct);
            if (current != null)
                current.EndDate = today;

            ProductFeatureApplicability applicability = new ProductFeatureApplicability();
            applicability.FinancialProduct = financialProduct;
            applicability.EffectiveDate = today;
            applicability.ProductFeature = feature;

            Context.ProductFeatureApplicabilities.AddObject(applicability);
            return applicability;
        }
Example #6
0
        public static ProductStatu CreateOrUpdateCurrent(FinancialProduct financialProduct, ProductStatusType productStatusType, DateTime today)
        {
            ProductStatu productStatus = GetActive(financialProduct);
            if (productStatus != null && productStatus.ProductStatusType.Id != productStatusType.Id)
                productStatus.IsActive = false;

            if (productStatus == null || productStatus.ProductStatusType.Id != productStatusType.Id)
            {
                ProductStatu newProductStatus = new ProductStatu();
                newProductStatus.FinancialProduct = financialProduct;
                newProductStatus.TransitionDateTime = today;
                newProductStatus.IsActive = true;
                newProductStatus.ProductStatusType = productStatusType;
                return newProductStatus;
            }
            return productStatus;
        }
Example #7
0
        public static bool CanChangeStatusTo(FinancialProduct financialProduct, ProductStatusType statusTo)
        {
            ProductStatu status = GetActive(financialProduct);

            if(status == null)
                return true;

            if (status.ProductStatusType.Id == ProductStatusType.ActiveType.Id)
            {
                return statusTo.Id != ProductStatusType.ActiveType.Id;
            }
            else if (status.ProductStatusType.Id == ProductStatusType.InactiveType.Id)
            {
                return statusTo.Id == ProductStatusType.ActiveType.Id;
            }
            else
            {
                return false;
            }
        }
        public static ProductFeatureApplicability CreateOrUpdate(ProductFeature feature, FinancialProduct financialProduct, decimal? value , DateTime today)
        {
            ProductFeatureApplicability current = GetActive(feature, financialProduct);
            if (current != null && current.Value == value)
                return current;

            bool createNew = (current != null && current.Value != value) || current == null;
            if (current != null && current.Value != value)
                current.EndDate = today;

            if (createNew)
            {
                ProductFeatureApplicability applicability = new ProductFeatureApplicability();
                applicability.FinancialProduct = financialProduct;
                applicability.EffectiveDate = today;
                applicability.ProductFeature = feature;
                applicability.Value = value;

                Context.ProductFeatureApplicabilities.AddObject(applicability);
                return applicability;
            }

            return current;
        }
 public static IQueryable<ApplicationItem> All(FinancialProduct financialProduct)
 {
     return Context.ApplicationItems.Where(entity =>
             entity.ProductFeatureApplicability.FinancialProductId == financialProduct.Id);
 }
        public static ProductFeatureApplicability UpdateFeatureExistence(ProductFeature feature, FinancialProduct financialProduct, bool shouldExist, DateTime today)
        {
            ProductFeatureApplicability current = GetActive(feature, financialProduct);
            //no changes
            if (shouldExist && current != null)
                return current;

            if (shouldExist && current == null)
            {
                ProductFeatureApplicability applicability = new ProductFeatureApplicability();
                applicability.FinancialProduct = financialProduct;
                applicability.EffectiveDate = today;
                applicability.ProductFeature = feature;

                Context.ProductFeatureApplicabilities.AddObject(applicability);
                return applicability;
            }

            if (current != null && shouldExist == false)
            {
                current.EndDate = today;
                return current;
            }

            return null;
        }
 public static IEnumerable<ProductFeatureApplicability> GetAllActive(ProductFeature feature, FinancialProduct financialProduct)
 {
     return financialProduct.ProductFeatureApplicabilities.Where(entity => entity.EndDate == null && entity.ProductFeatureId == feature.Id);
 }
 public static List<ProductFeatureApplicability> GetAllActive(ProductFeatureCategory category, FinancialProduct financialProduct)
 {
     return financialProduct.ProductFeatureApplicabilities.Where(entity => entity.EndDate == null && entity.ProductFeature.ProductFeatCatId == category.Id).ToList();
 }
 public static ProductFeatureApplicability GetActive(ProductFeature feature, FinancialProduct financialProduct)
 {
     return financialProduct.ProductFeatureApplicabilities.FirstOrDefault(entity => entity.EndDate == null && entity.ProductFeatureId == feature.Id);
 }
 public static ProductRequiredDocument GetActive(FinancialProduct financialProduct)
 {
     return financialProduct.ProductRequiredDocuments.FirstOrDefault(entity => entity.EndDate == null);
 }
Example #15
0
 public static ProductStatu GetActive(FinancialProduct financialProduct)
 {
     return financialProduct.ProductStatus.FirstOrDefault(entity => entity.IsActive);
 }