protected IBlock GetBlock(bool allowNoContextFound = true)
        {
            var wrapLog = Log.Call <IBlock>(parameters: $"request:..., {nameof(allowNoContextFound)}: {allowNoContextFound}");

            var containerId    = GetTypedHeader(Sxc.WebApi.WebApiConstants.HeaderInstanceId, -1);
            var contentblockId = GetTypedHeader(Sxc.WebApi.WebApiConstants.HeaderContentBlockId, 0); // this can be negative, so use 0
            var pageId         = GetTypedHeader(Sxc.WebApi.WebApiConstants.HeaderPageId, -1);
            var instance       = TestIds.FindInstance(containerId);

            if (containerId == -1 || pageId == -1 || instance == null)
            {
                if (allowNoContextFound)
                {
                    return(wrapLog("not found", null));
                }
                throw new Exception("No context found, cannot continue");
            }

            var ctx = SxcMvc.CreateContext(HttpContext.RequestServices, instance.Zone, pageId, containerId, instance.App,
                                           instance.Block);
            IBlock block = HttpContext.RequestServices.Build <BlockFromModule>().Init(ctx, Log);

            // only if it's negative, do we load the inner block
            if (contentblockId > 0)
            {
                return(wrapLog("found", block));
            }

            Log.Add($"Inner Content: {contentblockId}");
            block = HttpContext.RequestServices.Build <BlockFromEntity>().Init(block, contentblockId, Log);

            return(wrapLog("found", block));
        }
Beispiel #2
0
        public void NewFolderSpecifiesParent()
        {
            var folder = new LibraryFolderNode(_unitTestDispatcher.Dispatcher, _eventAggregator)
            {
                Id   = TestIds.GetId(0),
                Path = new [] { "Parent" }
            };

            folder.NewFolder.Execute(null);

            Assert.That(_listener.Requests, Is.EqualTo("AddFolder Parent\\\r\n"));
        }
Beispiel #3
0
        public void OutsideInitialNameModeCancelEditDoesNotRequestDelete()
        {
            var folder = new LibraryFolderNode(_unitTestDispatcher.Dispatcher, _eventAggregator)
            {
                Id = TestIds.GetId(0)
            };

            folder.BeginEditLabel.Execute(null);
            folder.CancelEditLabel.Execute(null);

            Assert.That(_listener.Requests, Is.EqualTo("Select Id0\r\n"));
        }
        public void SetUp()
        {
            _eventAggregator = new UnitTestEventAggregator();
            _listener        = new EventListener();
            _eventAggregator.AddListener(_listener);
            _unitTestDispatcher = new UnitTestDispatcher();
            _node      = new LibraryFileNode(_unitTestDispatcher.Dispatcher, _eventAggregator);
            _node.Id   = TestIds.GetId(0);
            _node.Id   = TestIds.GetId(0);
            _node.Name = "original name";

            _folderNode = new LibraryFolderNode(_unitTestDispatcher.Dispatcher, _eventAggregator)
            {
                Id   = TestIds.GetId(1),
                Path = new [] { "Parent" }
            };
        }
Beispiel #5
0
        public void PackageAndTestItems()
        {
            UpsellTest = true;
            //int forYear = 0;
            var currentSession = IoC.Resolve <ISessionContext>().UserSession;

            if (EventId > 0)
            {
                var eventRepository = IoC.Resolve <IEventRepository>();
                var theEvent        = eventRepository.GetById(EventId);
                if (theEvent != null)
                {
                    EventType           = theEvent.EventType;
                    EventDateLabel.Text = theEvent.EventDate.ToString("dddd, MMMM dd, yyyy");
                    RegistrationMode    = (short)theEvent.RegistrationMode;

                    //forYear = theEvent.EventDate.Year;

                    //var currentSession = IoC.Resolve<ISessionContext>().UserSession;
                    var configurationSettingRepository = IoC.Resolve <IConfigurationSettingRepository>();
                    EnableAlaCarte =
                        Convert.ToBoolean(
                            configurationSettingRepository.GetConfigurationValue(ConfigurationSettingName.EnableAlaCarte));
                    if (EnableAlaCarte)
                    {
                        if (currentSession != null && currentSession.CurrentOrganizationRole.CheckRole((long)Roles.Customer))
                        {
                            EnableAlaCarte = theEvent.EnableAlaCarteOnline;
                        }
                        else if (currentSession != null &&
                                 currentSession.CurrentOrganizationRole.CheckRole((long)Roles.CallCenterRep) ||
                                 currentSession != null &&
                                 currentSession.CurrentOrganizationRole.CheckRole((long)Roles.CallCenterManager))
                        {
                            EnableAlaCarte = theEvent.EnableAlaCarteCallCenter;
                        }
                        else if (currentSession != null &&
                                 (currentSession.CurrentOrganizationRole.CheckRole((long)Roles.Technician) ||
                                  currentSession.CurrentOrganizationRole.CheckRole((long)Roles.NursePractitioner)))
                        {
                            EnableAlaCarte = theEvent.EnableAlaCarteTechnician;
                        }
                        else if (
                            !(theEvent.EnableAlaCarteOnline || theEvent.EnableAlaCarteCallCenter ||
                              theEvent.EnableAlaCarteTechnician))
                        {
                            EnableAlaCarte = false;
                        }
                    }

                    var hostRepository = IoC.Resolve <IHostRepository>();
                    var host           = hostRepository.GetHostForEvent(theEvent.Id);
                    if (host != null)
                    {
                        EventNameLabel.Text    = HttpUtility.HtmlEncode(host.OrganizationName);
                        EventAddressLabel.Text = System.Web.Security.AntiXss.AntiXssEncoder.HtmlEncode(CommonCode.AddressMultiLine(host.Address.StreetAddressLine1,
                                                                                                                                   host.Address.StreetAddressLine2, host.Address.City,
                                                                                                                                   host.Address.State, host.Address.ZipCode.Zip), true);
                    }
                    var hospitalPartnerRepository = IoC.Resolve <IHospitalPartnerRepository>();
                    var hospitalPartnerId         = hospitalPartnerRepository.GetHospitalPartnerIdForEvent(EventId);
                    if (hospitalPartnerId > 0)
                    {
                        var organizationRepository = IoC.Resolve <IOrganizationRepository>();
                        var hospitalPartner        = organizationRepository.GetOrganizationbyId(hospitalPartnerId);
                        HospitalPartnerLabel.Text = hospitalPartner.Name;
                        SponsoredInfoDiv.Visible  = true;
                    }
                }
            }
            var customerRepository = IoC.Resolve <ICustomerRepository>();
            var userSession        = IoC.Resolve <ISessionContext>().UserSession;

            Core.Users.Domain.Customer customer = null;
            if (CustomerId > 0)
            {
                customer = customerRepository.GetCustomer(CustomerId);
            }
            else if (userSession != null && userSession.CurrentOrganizationRole.CheckRole((long)Roles.Customer))
            {
                customer = customerRepository.GetCustomer(userSession.CurrentOrganizationRole.OrganizationRoleUserId);
            }
            else if (Request.QueryString["CustomerId"] != null)
            {
                customer = customerRepository.GetCustomer(Convert.ToInt64(Request.QueryString["CustomerId"]));
            }
            if (Request.QueryString["EventCustomerID"] != null)
            {
                var eventCustomerRepository = IoC.Resolve <IUniqueItemRepository <EventCustomer> >();
                var eventCustomer           = eventCustomerRepository.GetById(Convert.ToInt64(Request.QueryString["EventCustomerID"]));
                if (eventCustomer != null)
                {
                    if (customer == null)
                    {
                        customer = customerRepository.GetCustomer(eventCustomer.CustomerId);
                    }
                    SingleTestOverride = eventCustomer.SingleTestOverride;
                }
            }
            CorporateAccount account = null;

            if (EventId > 0 && customer != null)
            {
                _customerId = customer.CustomerId;

                var corporateAccountRepository = IoC.Resolve <ICorporateAccountRepository>();
                account = corporateAccountRepository.GetbyEventId(EventId);

                var preApprovedTestRepository = IoC.Resolve <IPreApprovedTestRepository>();
                var preApprovedTests          = preApprovedTestRepository.GetByCustomerId(customer.CustomerId);

                var preApprovedPackageRepository = IoC.Resolve <IPreApprovedPackageRepository>();
                var preApprovedPackageId         = preApprovedPackageRepository.CheckPreApprovedPackages(customer.CustomerId);

                //IEnumerable<RequiredTest> requiredTests = null;
                //var requiredTestIdList = new List<long>();
                //if (forYear > 0)
                //{
                //    var requiredTestRepository = IoC.Resolve<IRequiredTestRepository>();
                //    requiredTests = requiredTestRepository.GetByRequiredTestByCustomerIdAndYear(customer.CustomerId, forYear);
                //    requiredTestIdList = requiredTests != null ? requiredTests.Select(x => x.TestId).ToList() : null;
                //    if (!requiredTests.IsNullOrEmpty())
                //        RequiredTestIds = string.Join(",", requiredTests.Select(x => x.TestId));
                //}

                var eventPackageRepository = IoC.Resolve <IEventPackageRepository>();
                var eventPackages          = eventPackageRepository.GetPackagesForEventByRole(EventId, RoleId);

                var eventCustomerRepository = IoC.Resolve <IEventCustomerRepository>();
                var eventCustomer           = eventCustomerRepository.Get(EventId, customer.CustomerId);

                var eventTestRepository = IoC.Resolve <IEventTestRepository>();
                var eventTests          = eventTestRepository.GetTestsForEventByRole(EventId, RoleId);
                var preApprovedTestIds  = new List <long>();

                if (preApprovedPackageId > 0 && eventPackages != null && eventPackages.Any() && account != null && account.AllowPreQualifiedTestOnly)
                {
                    var eventPackage = eventPackages.FirstOrDefault(x => x.PackageId == preApprovedPackageId);
                    PreApprovedPackage   = eventPackage != null;
                    PreApprovedPackageId = eventPackage != null ? eventPackage.PackageId : 0;
                }

                if (account != null && account.DefaultSelectionBasePackage && PreApprovedPackageId == 0)
                {
                    if (!eventPackages.IsNullOrEmpty())
                    {
                        var lowestPricePackage = eventPackages.OrderBy(ep => ep.Price).First();
                        PreApprovedPackageId = lowestPricePackage.PackageId;
                    }
                }

                var testIdsToAdd = new List <long>();
                if (account != null && account.AllowPreQualifiedTestOnly && (preApprovedTests != null && preApprovedTests.Any()))
                {
                    AllowPrequalifiedTestOnly = true;

                    var eventTestIds = eventTests.Select(et => et.TestId).ToList();
                    preApprovedTestIds = preApprovedTests.Where(pat => eventTestIds.Contains(pat.TestId)).Select(pat => pat.TestId).ToList();

                    var eventPackage = eventPackages.FirstOrDefault(x => x.PackageId == preApprovedPackageId);
                    var preApprovedPackageTestIds = eventPackage != null?eventPackage.Package.Tests.Select(x => x.Id) : new List <long>();

                    var testIdsForCustomerOrder = eventTests.Where(x => x.Test.IsDefaultSelectionForOrder).Select(x => x.TestId).ToList();
                    if (!testIdsForCustomerOrder.IsNullOrEmpty())
                    {
                        testIdsToAdd = preApprovedTestIds.Where(x => !preApprovedPackageTestIds.Contains(x)).ToList();
                        testIdsToAdd.AddRange(testIdsForCustomerOrder);
                        // PreApprovedIndependentTestIds = string.Join(",", testIdsToAdd);
                    }

                    else
                    {
                        testIdsToAdd = preApprovedTestIds.Where(x => !preApprovedPackageTestIds.Contains(x)).ToList();
                        //PreApprovedIndependentTestIds = string.Join(",", preApprovedTestIds.Where(x => !preApprovedPackageTestIds.Contains(x)));
                    }

                    /*PreApprovedIndependentTestIds = string.Join(",", preApprovedTestIds.Where(x => !preApprovedPackageTestIds.Contains(x)));*/

                    if (userSession.CurrentOrganizationRole.CheckRole((long)Roles.Technician) || userSession.CurrentOrganizationRole.CheckRole((long)Roles.NursePractitioner) ||
                        userSession.CurrentOrganizationRole.CheckRole((long)Roles.CallCenterRep) || userSession.CurrentOrganizationRole.CheckRole((long)Roles.FranchisorAdmin) ||
                        userSession.CurrentOrganizationRole.CheckRole((long)Roles.FranchiseeAdmin))
                    {
                        AllowPrequalifiedTestOnly = !account.AllowTechnicianUpdatePreQualifiedTests;
                    }

                    if (account.AllowPreQualifiedTestOnly && (eventCustomer == null || !eventCustomer.AppointmentId.HasValue) && (RegistrationFlow == null || !RegistrationFlow.SingleTestOverride) &&
                        (RegistrationFlow == null || string.IsNullOrEmpty(RegistrationFlow.DisqualifiedTest)))
                    {
                        if (!preApprovedTestIds.IsNullOrEmpty())
                        {
                            if (PackageId > 0)
                            {
                                TestIds.AddRange(preApprovedTestIds);
                                TestIds = TestIds.Distinct().ToList();
                            }
                            else
                            {
                                TestIds = preApprovedTestIds;
                            }
                        }
                    }
                }

                if (!EnableAlaCarte)
                {
                    AllowPrequalifiedTestOnly = true;
                }

                //if (account != null && (requiredTests != null && requiredTests.Any()))
                //{
                //    testIdsToAdd.AddRange(requiredTests.Select(x => x.TestId).ToList());
                //    //PreApprovedIndependentTestIds = string.Join(",", requiredTests.Select(x => x.TestId));
                //}
                if (!testIdsToAdd.IsNullOrEmpty())
                {
                    testIdsToAdd = testIdsToAdd.Distinct().ToList();
                    PreApprovedIndependentTestIds = string.Join(",", testIdsToAdd);
                }

                PrequalifedTestIds = string.Join(",", preApprovedTestIds);

                if (eventCustomer == null || !eventCustomer.AppointmentId.HasValue)
                {
                    var testForCustomerOrder =
                        eventTests.Where(x => x.Test.IsDefaultSelectionForOrder).Select(x => x.TestId).ToList();

                    if (TestIds.IsNullOrEmpty())
                    {
                        TestIds = testForCustomerOrder;
                    }
                    else
                    {
                        TestIds.AddRange(testForCustomerOrder);
                        TestIds = TestIds.Distinct().ToList();
                    }
                }
                else
                {
                    if (PreApprovedPackage && preApprovedPackageId > 0)
                    {
                        PreApprovedPackage = PackageId == preApprovedPackageId;
                    }
                }
                if (!DisqualifiedTestIds.IsNullOrEmpty())
                {
                    if (!string.IsNullOrWhiteSpace(SelectedPackageTestIds))
                    {
                        try
                        {
                            var packageTestIds = SelectedPackageTestIds.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                                                 .Select(long.Parse);

                            if (packageTestIds.Any(x => DisqualifiedTestIds.Contains(x)))
                            {
                                PackageId = 0;
                            }
                        }
                        catch (Exception ex)
                        {
                            IoC.Resolve <ILogManager>().GetLogger("Logger").Error("Exception occurred while converting package Test");
                            IoC.Resolve <ILogManager>().GetLogger("Logger").Error("Exception Message: " + ex.Message);
                            IoC.Resolve <ILogManager>().GetLogger("Logger").Error("stack trace: " + ex.StackTrace);
                        }
                    }
                    if (!TestIds.IsNullOrEmpty())
                    {
                        TestIds = TestIds.Where(x => !DisqualifiedTestIds.Contains(x)).ToList();
                    }
                }
                //if (!requiredTests.IsNullOrEmpty() && !requiredTestIdList.IsNullOrEmpty())
                //{
                //    TestIds.AddRange(requiredTestIdList);
                //    TestIds = TestIds.Distinct().ToList();
                //}
            }

            if (customer == null || !customer.DateOfBirth.HasValue)
            {
                return;
            }

            if (account != null)
            {
                UpsellTest = account.UpsellTest;
            }

            var now   = DateTime.Now;
            var birth = customer.DateOfBirth.Value;

            Age = now.Year - birth.Year - ((now.DayOfYear < birth.DayOfYear) ? 1 : 0);
        }
Beispiel #6
0
        private void NextButtonClick()
        {
            if (!EventValidation())
            {
                return;
            }

            SetPackageData();
            if (!string.IsNullOrEmpty(txtCouponCode.Text))
            {
                SetSourceCodeData();
            }
            else
            {
                SourceCodeId     = 0;
                SourceCode       = string.Empty;
                SourceCodeAmount = decimal.Zero;
            }

            TotalAmount = PackageCost - SourceCodeAmount;

            if (!string.IsNullOrWhiteSpace(hfQuestionAnsTestId.Value))
            {
                QuestionIdAnswerTestId = hfQuestionAnsTestId.Value;
            }
            else
            {
                QuestionIdAnswerTestId = string.Empty;
            }

            if (!string.IsNullOrWhiteSpace(hfDisqualifedTest.Value))
            {
                DisqualifiedTest = hfDisqualifedTest.Value;
            }
            else
            {
                DisqualifiedTest = string.Empty;
            }

            var isEawvPurchased = (TestIds.Any(x => x == (long)TestType.eAWV) || AddOnTestIds.Any(x => x == (long)TestType.eAWV));

            if (CustomerId > 0 && !RegistrationFlow.AwvVisitId.HasValue)
            {   // this was added so that Even if the user forgets to open the HRA Questionnaire Button - We push the User to Medicare.
                var account = AccountByEventId;

                QuestionnaireType questionnaireType = QuestionnaireType.None;
                if (account != null && EventData != null)
                {
                    var accountHraChatQuestionnaireHistoryServices = IoC.Resolve <IAccountHraChatQuestionnaireHistoryServices>();
                    questionnaireType = accountHraChatQuestionnaireHistoryServices.QuestionnaireTypeByAccountIdandEventDate(account.Id, EventData.EventDate);
                }


                if (account != null && account.IsHealthPlan && (questionnaireType == QuestionnaireType.HraQuestionnaire) && isEawvPurchased)
                {
                    try
                    {
                        var setting = IoC.Resolve <ISettings>();

                        if (setting.SyncWithHra)
                        {
                            var medicareService = IoC.Resolve <IMedicareService>();
                            var model           = medicareService.GetCustomerDetails(CustomerId);
                            model.Tag = account.Tag;
                            var medicareApiService = IoC.Resolve <IMedicareApiService>();


                            model.EventDetails = new MedicareEventEditModel {
                                EventId = EventId, VisitDate = EventData.EventDate
                            };
                            var result = medicareApiService.PostAnonymous <MedicareCustomerSetupViewModel>(setting.MedicareApiUrl + MedicareApiUrl.CreateUpdateCustomer, model);
                            if (result != null)
                            {
                                RegistrationFlow.AwvVisitId = result.PatientVisitId;
                            }
                        }
                    }
                    catch (Exception exception)
                    {
                        var logger = IoC.Resolve <ILogManager>().GetLogger <Global>();
                        logger.Error("Error occured in Medicare Customer Sync (In Existing Customer : Select appointment) for Customer : " + CustomerId +
                                     " Message: " + exception.Message + "\n stack Trace: " + exception.StackTrace);
                    }
                }
            }

            if (Request.QueryString["Eventid"] != null)
            {
                EventId = long.Parse(Request.QueryString["Eventid"]);
                Response.RedirectUser("/App/Common/RegisterCustomer/SelectAppointment.aspx?EventID=" + EventId + "&guid=" + GuId);
            }
            else if (CustomerType == CustomerType.Existing)
            {
                Response.RedirectUser("SelectAppointment.aspx?Customer=Existing" + "&guid=" + GuId);
            }
            else
            {
                Response.RedirectUser("SelectAppointment.aspx?guid=" + GuId);
            }
        }
        private bool PaymentViaSourceCode()
        {
            var organizationRoleUser = GetOrganizationRoleUser();

            var orderables     = new List <IOrderable>();
            var packageTestIds = new List <long>();

            if (PackageId > 0)
            {
                var packageRepository = IoC.Resolve <IEventPackageRepository>();
                var package           = packageRepository.GetByEventAndPackageIds(EventId.Value, PackageId);
                if (package != null)
                {
                    packageTestIds = package.Tests.Select(t => t.Test.Id).ToList();
                }

                orderables.Add(package);
            }

            var independentTestIds = !packageTestIds.IsNullOrEmpty() ? TestIds.Where(t => !packageTestIds.Contains(t)).Select(t => t).ToList() : TestIds;

            if (!independentTestIds.IsNullOrEmpty())
            {
                var eventTestRepository = IoC.Resolve <IEventTestRepository>();
                orderables.AddRange(eventTestRepository.GetByEventAndTestIds(EventId.Value, independentTestIds));
            }

            if (ProductId.HasValue && ProductId.Value > 0)
            {
                IUniqueItemRepository <ElectronicProduct> itemRepository = new ElectronicProductRepository();
                orderables.Add(itemRepository.GetById(ProductId.Value));
            }

            if (orderables.IsNullOrEmpty())
            {
                return(false);
            }

            Core.Finance.Domain.Order order = null;
            EventCustomer             eventCustomer;

            try
            {
                order = GetOrder();
                if (order == null)
                {
                    eventCustomer = SaveEventCustomer(organizationRoleUser);
                }
                else
                {
                    eventCustomer = UpdateEventCustomer(organizationRoleUser);
                }
            }
            catch
            {
                eventCustomer = SaveEventCustomer(organizationRoleUser);
            }

            SourceCode sourceCode;

            if (SourceCodeId > 0)
            {
                sourceCode = new SourceCode
                {
                    Id          = SourceCodeId,
                    CouponCode  = SourceCode,
                    CouponValue = SourceCodeAmount
                }
            }
            ;
            else
            {
                sourceCode = null;
            }

            if (ShippingDetail != null)
            {
                IShippingController shippingController = new ShippingController();
                ShippingDetail = shippingController.OrderShipping(ShippingDetail);
            }

            IOrderController orderController        = new OrderController();
            bool             indentedLineItemsAdded = false;

            // TODO: applying hook to the system all the indented line items will be attached to the first order item.
            foreach (var orderable in orderables)
            {
                if (!indentedLineItemsAdded)
                {
                    orderController.AddItem(orderable, 1, organizationRoleUser.Id, organizationRoleUser.Id,
                                            sourceCode,
                                            eventCustomer, ShippingDetail, OrderStatusState.FinalSuccess);
                    indentedLineItemsAdded = true;
                }
                else
                {
                    orderController.AddItem(orderable, 1, organizationRoleUser.Id, organizationRoleUser.Id,
                                            OrderStatusState.FinalSuccess);
                }
            }

            if (order == null)
            {
                order = orderController.PlaceOrder(OrderType.Retail, organizationRoleUser.Id);
            }
            else
            {
                order = orderController.ActivateOrder(order);
            }

            SaveProductShippingDetail(order);
            return(true);
        }
Beispiel #8
0
 private string GetTests() => string.Join("", TestIds.Select(a => a.Build()).ToList());