public override async Task GetByIdThatDoesntExistReturnsNullAsync() { int id = 1000; var options = new DbContextOptionsBuilder <Project15Context>() .UseInMemoryDatabase("db_eventcustomer_test_getId").Options; // arrange (use the context directly - we assume that works) using (var db = new Project15Context(options)); // assert (for assert, once again use the context directly for verify.) using (var db = new Project15Context(options)) { var repo = new EventCustomerRepository(db); EventCustomer eventCustomer = await repo.GetByIdAsync(id); Assert.Null(eventCustomer); } }
public override async Task DeleteWithIdThatDoesntExistThrowsExceptionAsync() { int id = 1000; // arrange (use the context directly - we assume that works) var options = new DbContextOptionsBuilder <Project15Context>() .UseInMemoryDatabase("db_eventcustomer_test_delete").Options; using (var db = new Project15Context(options)); // assert (for assert, once again use the context directly for verify.) using (var db = new Project15Context(options)) { var repo = new EventCustomerRepository(db); EventCustomer eventCustomer = await repo.GetByIdAsync(id); Assert.Null(eventCustomer); await Assert.ThrowsAsync <ArgumentException>(() => repo.DeleteAsync(id)); } }
public async Task <EventCustomer> UpdateAsync(EventCustomer model, int?id = null) { EventsCustomers eventDataAccess = Mapper.Map <EventCustomer, EventsCustomers>(model); if (id == null) { throw new ArgumentException("Nedded id", nameof(id)); } EventsCustomers tracked = _db.EventsCustomers.Find(id); if (tracked == null) { throw new ArgumentException("No EventCustomerwith this id", nameof(id)); } _db.Entry(tracked).CurrentValues.SetValues(eventDataAccess); model = Mapper.Map <EventsCustomers, EventCustomer>(eventDataAccess); return(model); }
public bool Insert(EventEntryEntity entity) { bool isinserted = false; using (var db = new EventDBEntities()) { EventEntryMaster record = new EventEntryMaster(); record.Eventid = entity.Eventid; record.Eventdate = entity.Eventdate; record.Createddate = entity.Createddate; record.Createdby = entity.Createdby; record.TotalAmount = entity.TotalAmount; record.Location = entity.Location; record.Id = entity.Id; record.IsActive = true; db.EventEntryMasters.Add(record); db.SaveChanges(); long evenentryid = record.Id; if (evenentryid > 0) { if (entity.customerlist != null) { foreach (var item in entity.customerlist) { EventCustomer eventcustrecord = new EventCustomer(); eventcustrecord.Eventcustomerid = item.Eventcustomerid; eventcustrecord.Paidamount = item.Paidamount; eventcustrecord.IsActive = true; eventcustrecord.Evententryid = evenentryid; db.EventCustomers.Add(eventcustrecord); db.SaveChanges(); } } } isinserted = true; } return(isinserted); }
public KynNotificationViewModel IsApplicableForNotification(EventCustomer eventCustomer) { if (!eventCustomer.AppointmentId.HasValue) { return(null); } var isKynIntegrationEnabled = _eventPodRepository.IsKynIntegrationEnabled(eventCustomer.EventId); if (!isKynIntegrationEnabled) { return(null); } var tests = _eventCustomerPackageTestDetailService.GetTestsPurchasedByCustomer(eventCustomer.EventId, eventCustomer.CustomerId); var isKynTestPurchased = tests != null && tests.Any(t => t.Id == (long)TestType.Kyn); if (!isKynTestPurchased) { return(null); } var customer = _customerRepository.GetCustomer(eventCustomer.CustomerId); var isDemographicInfoFilled = CheckDemographicInfo(customer); var isHafFilled = _kynHealthAssessmentHelper.IsKynHafFilled(eventCustomer.EventId, eventCustomer.CustomerId); if (isDemographicInfoFilled && isHafFilled) { return(null); } var eventHostViewData = _eventService.GetById(eventCustomer.EventId); var appointment = _appointmentRepository.GetById(eventCustomer.AppointmentId.Value); return(_notificationModelsFactory.GetKynNotificationViewModel(customer, eventHostViewData, appointment, isDemographicInfoFilled, isHafFilled)); }
public async Task <ActionResult> CreateAsync(EventCustomer record) { try { // use POST method, not GET, based on the route the service has defined HttpRequestMessage request = CreateRequestToService(HttpMethod.Post, "api/EventCustomer", record); HttpResponseMessage response = await Client.SendAsync(request); if (!response.IsSuccessStatusCode) { if (response.StatusCode == HttpStatusCode.Unauthorized) { return(RedirectToAction("Login", "Account")); } return(View(record)); } return(RedirectToAction(nameof(Index))); } catch { return(View(record)); } }
//TODO: This will be pulled into the UpdateSourceCode in EventCustomerRepository once old order system is removed. private bool UpdateSourceCodeForExistingOrder(long eventCustomerId, string sourceCode, long userId, long shellId, long roleId) { IUniqueItemRepository <EventCustomer> itemRepository = new EventCustomerRepository(); EventCustomer eventCustomer = itemRepository.GetById(eventCustomerId); var creatorOrganizationRoleUser = IoC.Resolve <IOrgRoleUserModelBinder>().ToDomain( IoC.Resolve <ISessionContext>().UserSession.CurrentOrganizationRole, IoC.Resolve <ISessionContext>().UserSession.UserId); var newSourceCode = _sourceCodeRepository.GetSourceCodeByCode(sourceCode); if (creatorOrganizationRoleUser == null || newSourceCode == null) { return(false); } try { var order = _orderRepository.GetOrder(eventCustomer.CustomerId, eventCustomer.EventId); OrderDetail orderDetail = _orderController.GetActiveOrderDetail(order); if (orderDetail == null) { return(false); } newSourceCode.CouponValue = orderDetail.SourceCodeOrderDetail != null ? orderDetail.SourceCodeOrderDetail.Amount : 0.00m; return(_orderController.UpdateOrder(order, newSourceCode, creatorOrganizationRoleUser.Id) != null); } catch (ObjectNotFoundInPersistenceException <Order> ) { return(false); } }
private string GetStatusCode(EventCustomer eventCustomer, Appointment appointment, Event eventData) { if (eventCustomer.NoShow || eventCustomer.LeftWithoutScreeningReasonId.HasValue || (eventData.EventDate < DateTime.Today && (appointment != null && (appointment.CheckInTime == null || appointment.CheckOutTime == null)))) { return("N"); } if (!eventCustomer.AppointmentId.HasValue) { return("C"); } if (appointment != null && appointment.CheckInTime.HasValue && appointment.CheckOutTime.HasValue) { return("A"); } if (eventData.EventDate >= DateTime.Today) { return("P"); } return(string.Empty); }
public void CreateOrder(TempCart tempCart, PaymentEditModel paymentEditModel = null) { if (tempCart.EventId == null || tempCart.CustomerId == null || tempCart.AppointmentId == null || (tempCart.EventPackageId == null && string.IsNullOrEmpty(tempCart.TestId))) { return; } var customer = _customerRepository.GetCustomer(tempCart.CustomerId.Value); var inDb = _eventCustomerRepository.Get(tempCart.EventId.Value, tempCart.CustomerId.Value); var eventCustomer = new EventCustomer { Id = inDb != null ? inDb.Id : 0, EventId = tempCart.EventId.Value, CustomerId = tempCart.CustomerId.Value, DataRecorderMetaData = new DataRecorderMetaData { DataRecorderCreator = new OrganizationRoleUser(tempCart.CustomerId.Value), DateCreated = DateTime.Now }, OnlinePayment = true, MarketingSource = tempCart.MarketingSource, NoShow = false, TestConducted = false, HIPAAStatus = RegulatoryState.Unknown, EnableTexting = customer.EnableTexting }; using (var scope = new TransactionScope()) { var appointment = _eventAppointmentService.CreateAppointment(tempCart.InChainAppointmentSlotIds, tempCart.CustomerId.Value); eventCustomer.AppointmentId = appointment.Id; eventCustomer = _eventCustomerRepository.Save(eventCustomer); //Moved code into ProcessPayment to Extract Common Code for API and Service ProcessPayment(paymentEditModel, eventCustomer.Id, customer.CustomerId, false); var orderables = new List <IOrderable>(); if (tempCart.EventPackageId.HasValue) { orderables.Add(_eventPackageRepository.GetById(tempCart.EventPackageId.Value)); } var testIds = new List <long>(); if (!string.IsNullOrEmpty(tempCart.TestId)) { string[] testIdStrings = tempCart.TestId.Split(new[] { ',' }); foreach (var testIdString in testIdStrings) { int i = 0; if (int.TryParse(testIdString, out i)) { testIds.Add(i); } } } if (testIds.Count > 0) { var eventTests = _eventTestRepository.GetbyIds(testIds); if (tempCart.EventPackageId.HasValue) { foreach (var eventTest in eventTests) { eventTest.Price = eventTest.WithPackagePrice; } } orderables.AddRange(eventTests); } IEnumerable <ElectronicProduct> products = null; var productIds = new List <long>(); if (!string.IsNullOrEmpty(tempCart.ProductId)) { string[] productIdStrings = tempCart.ProductId.Split(new[] { ',' }); foreach (var productIdIdString in productIdStrings) { int i = 0; if (int.TryParse(productIdIdString, out i)) { productIds.Add(i); } } } if (productIds.Count > 0) { products = _productRepository.GetByIds(productIds); orderables.AddRange(products); } if (orderables.IsNullOrEmpty()) { return; } SourceCode sourceCode = null; if (tempCart.SourceCodeId.HasValue && tempCart.SourceCodeId.Value > 0) { var sourceCodeModel = GetSourceCodeApplied(tempCart); sourceCode = new SourceCode { Id = sourceCodeModel.SourceCodeId, CouponCode = sourceCodeModel.SourceCode, CouponValue = sourceCodeModel.DiscountApplied }; } var shippingAddress = tempCart.ShippingAddressId.HasValue ? _addressRepository.GetAddress(tempCart.ShippingAddressId.Value) : null; ShippingDetail shippingDetail = null; if (tempCart.ShippingId != null && tempCart.ShippingId.Value > 0) { var shippingOption = _shippingOptionRepository.GetById(tempCart.ShippingId.Value); shippingDetail = new ShippingDetail { ShippingOption = shippingOption, ShippingAddress = shippingAddress, Status = ShipmentStatus.Processing, ActualPrice = shippingOption.Price, DataRecorderMetaData = new DataRecorderMetaData(tempCart.CustomerId.Value, DateTime.Now, null) }; shippingDetail = _shippingController.OrderShipping(shippingDetail); } 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 && (orderable.OrderItemType == OrderItemType.EventPackageItem || orderable.OrderItemType == OrderItemType.EventTestItem)) { _orderController.AddItem(orderable, 1, tempCart.CustomerId.Value, tempCart.CustomerId.Value, sourceCode, eventCustomer, shippingDetail, OrderStatusState.FinalSuccess); indentedLineItemsAdded = true; } else { _orderController.AddItem(orderable, 1, tempCart.CustomerId.Value, tempCart.CustomerId.Value, OrderStatusState.FinalSuccess); } } var order = _orderRepository.GetOrder(tempCart.CustomerId.Value, tempCart.EventId.Value); order = order == null?_orderController.PlaceOrder(OrderType.Retail, tempCart.CustomerId.Value) : _orderController.ActivateOrder(order); if (products != null && products.Count() > 0 && shippingDetail != null) { foreach (var electronicProduct in products) { SaveProductShippingDetail(electronicProduct.Id, order, shippingAddress, customer.CustomerId); } } if (paymentEditModel != null && paymentEditModel.Payments != null && paymentEditModel.Payments.Any(p => p.ChargeCard != null || p.ECheck != null || p.GiftCertificate != null)) { var paymentId = _paymentController.SavePayment(paymentEditModel, tempCart.CustomerId.Value); _orderRepository.ApplyPaymentToOrder(order.Id, paymentId); } scope.Complete(); } }
private string SendCustomNotification(Customer customer, EventCustomer eventCustomer, CorporateAccount account, CustomEventNotification customEventNotification) { try { var message = string.Empty; _logger.Info("Running Custom SMS for Customer: " + customer.CustomerId); if (!eventCustomer.EnableTexting) { message = "Customer has not opted for SMS"; _logger.Info(message); return(message); } if (customer.IsSubscribed == null || customer.IsSubscribed.Value == false) { message = "Customer has not subscribed for SMS"; _logger.Info(message); return(message); } var messageAlreadySentList = _eventCustomerNotificationRepository.GetAllByEventCustomerId(eventCustomer.EventId, NotificationTypeAlias.CustomEventSmsNotification); var messageCount = (!messageAlreadySentList.IsNullOrEmpty()) ? EnumerableExtensions.Count(messageAlreadySentList) : 0; if (account != null) { var accountMaxSmscount = (account.MaximumSms.HasValue) ? account.MaximumSms.Value : 0; if (messageCount >= accountMaxSmscount) { _logger.Info("Maximum SMS has Been Sent "); _logger.Info(string.Format("Allowed SMS {0}, SMS Already Sent {0} " + accountMaxSmscount, messageCount)); message = "Maximum SMS limit has been reached."; return(message); } } if (messageAlreadySentList.Any() && (account == null || !account.MaximumSms.HasValue)) { message = "Maximum SMS limit has been reached."; return(message); } var smsNotificaionModel = _phoneNotificationModelsFactory.GetCustomEventSmsNotificatonModel(customEventNotification.Body); var notification = _notifier.NotifyViaSms(NotificationTypeAlias.CustomEventSmsNotification, EmailTemplateAlias.CustomEventSms, smsNotificaionModel, customer.Id, customEventNotification.CreatedBy, "Event Detail "); if (notification != null) { var eventCustomerNotification = new EventCustomerNotification { EventCustomerId = eventCustomer.Id, NotificationId = notification.Id, NotificationTypeId = notification.NotificationType.Id }; _eventCustomerNotificationRepository.Save(eventCustomerNotification); } message = "Message has been successfully Queued"; return(message); } catch (Exception exception) { _logger.Error("Some Error occurred while Queuing message"); _logger.Info("Message: " + exception.Message); _logger.Info("Stack Trace: " + exception.StackTrace); return("Some Error occurred while Queuing message"); } }
private bool AdjustCustomerOrder(EventCustomer eventCustomer, Order currentOrder, long newPackageId, long oldPackageId, long createdByOrgRoleUserId, long customerId, IEnumerable <long> orderedTestIds, IEnumerable <long> preApprovedTestIds, IEnumerable <long> packageTestIds, long corporateUploadId) { if (corporateUploadId == 0) { return(false); } if (currentOrder != null && !currentOrder.OrderDetails.IsEmpty()) { if (eventCustomer == null) { return(false); } var OrderId = currentOrder.Id; var forOrganizationRoleUser = GetForOrganizationRoleUser(customerId); IOrderController orderController = new Falcon.App.Infrastructure.Finance.Impl.OrderController(); var currentPreApprovedTest = _preApprovedTestRepository.GetByCustomerId(customerId); if (IsOldPreApprovedTestSame(currentPreApprovedTest.Select(x => x.TestId), preApprovedTestIds)) { return(false); } // var selectedTestIds = orderedTestIds.ToList(); var selectedTestIds = new List <long>(); //if (!currentPreApprovedTest.IsNullOrEmpty()) //{ // var testIdToRemove = currentPreApprovedTest.Select(x => x.TestId); // selectedTestIds = selectedTestIds.Where(x => !testIdToRemove.Contains(x)).ToList(); //} //if (newPackageId != oldPackageId && oldPackageId != 0) //{ // selectedTestIds = selectedTestIds.Where(x => !packageTestIds.Contains(x)).ToList(); //} selectedTestIds.AddRange(preApprovedTestIds); var orderables = new List <IOrderable>(); long oldEventPackageId = 0; long newEventPackageId = 0; var oldEventTestIds = new List <long>(); var newEventTestIds = new List <long>(); EventPackage eventPackage = null; EventPackage oldEventPackage = null; if (newPackageId > 0) { eventPackage = _eventPackageRepository.GetByEventAndPackageIds(eventCustomer.EventId, newPackageId); } if (oldPackageId > 0) { oldEventPackage = _eventPackageRepository.GetByEventAndPackageIds(eventCustomer.EventId, oldPackageId); } var testIdsInPackage = new List <long>(); if (eventPackage != null) { orderables.Add(eventPackage); newEventPackageId = eventPackage.Id; RemoveTestsAlreadyInPackage(selectedTestIds.ToList(), eventCustomer.EventId, eventPackage); testIdsInPackage = eventPackage.Package.Tests.Select(x => x.Id).ToList(); } if (oldEventPackage != null) { oldEventPackageId = oldEventPackage.Id; if (eventPackage == null) { orderables.Add(oldEventPackage); RemoveTestsAlreadyInPackage(selectedTestIds.ToList(), eventCustomer.EventId, oldEventPackage); testIdsInPackage = oldEventPackage.Package.Tests.Select(x => x.Id).ToList(); } } var oldEventTests = _eventTestRepository.GetByEventAndTestIds(eventCustomer.EventId, orderedTestIds); if (oldEventTests != null) { oldEventTestIds = oldEventTests.Select(x => x.Id).ToList(); } var disqualifiedTestIds = _disqualifiedTestRepository.GetLatestVersionTestId(eventCustomer.CustomerId, eventCustomer.EventId); var dependentDisqualifiedTestIds = _dependentDisqualifiedTestRepository.GetLatestVersionTestId(eventCustomer.CustomerId, eventCustomer.EventId); disqualifiedTestIds = (disqualifiedTestIds.Concat(dependentDisqualifiedTestIds)).Distinct(); //removing disqualified test from new order selectedTestIds = selectedTestIds.Where(x => !disqualifiedTestIds.Contains(x)).ToList(); //remove test which are already present in package test selectedTestIds = selectedTestIds.Where(x => !testIdsInPackage.Intersect(selectedTestIds).Contains(x)).ToList(); if (!selectedTestIds.IsNullOrEmpty()) { var eventTests = _eventTestRepository.GetByEventAndTestIds(eventCustomer.EventId, selectedTestIds); if (newPackageId > 0 || oldPackageId > 0) { foreach (var eventTest in eventTests) { eventTest.Price = eventTest.WithPackagePrice; } } orderables.AddRange(eventTests); newEventTestIds = eventTests.Select(x => x.Id).ToList(); } if (((oldEventPackageId > 0 && newEventPackageId == 0) || (newEventPackageId == oldEventPackageId)) && (newEventTestIds.All(oldEventTestIds.Contains) && newEventTestIds.Count == oldEventTestIds.Count)) { return(false); } if (orderables.IsNullOrEmpty()) { return(false); } var insurancePayment = currentOrder.PaymentsApplied.Where(pi => pi.PaymentType == Falcon.App.Core.Finance.Enum.PaymentType.Insurance).Select(pi => pi).SingleOrDefault(); if (insurancePayment != null) { _insurancePaymentRepository.Delete(insurancePayment.Id); } bool indentedLineItemsAdded = false; foreach (var orderable in orderables) { if (!indentedLineItemsAdded && (orderable.OrderItemType == OrderItemType.EventPackageItem || orderable.OrderItemType == OrderItemType.EventTestItem)) { orderController.AddItem(orderable, 1, forOrganizationRoleUser.Id, createdByOrgRoleUserId, null, null, null, OrderStatusState.FinalSuccess); indentedLineItemsAdded = true; } else { orderController.AddItem(orderable, 1, forOrganizationRoleUser.Id, createdByOrgRoleUserId, OrderStatusState.FinalSuccess); } } Order newOrder = orderController.PlaceOrder(currentOrder); _customerOrderHistoryService.SaveCustomerOrderHistory(eventCustomer, corporateUploadId, oldEventPackageId, newEventPackageId, oldEventTestIds, newEventTestIds); return(true); } return(false); }
public PatientWorksheet GetPatientWorksheetModel(Customer customer, Event theEvent, EventCustomer eventCustomer) { var customerId = customer.Id; var eventId = theEvent.Id; var order = _orderRepository.GetOrderByEventCustomerId(eventCustomer.Id); var eventPackage = _eventPackageRepository.GetPackageForOrder(order.Id); var eventTest = _eventTestRepository.GetTestsForOrder(order.Id); var products = _electronicProductRepository.GetAllProductsForEvent(eventId); var purchasedProduct = _electronicProductRepository.GetElectronicProductByOrderId(order.Id); var customerIcdCodes = _customerIcdCodesRepository.GetIcdByCustomerId(customerId); var customerTags = _corporateCustomerCustomTagRepository.GetByCustomerId(customerId); var preApporvedTestNames = _preApprovedTestRepository.GetPreApprovedTestNameByEventCustomerId(eventCustomer.Id); var testForTechnician = _eventTestRepository.GetTestsForEventByRole(eventId, (long)Roles.Technician); string[] customerRecentTags = null; var isCorporateEvent = theEvent.EventType == EventType.Corporate; if (customerTags != null && customerTags.Any() && isCorporateEvent) { customerTags = customerTags.OrderByDescending(x => x.DataRecorderMetaData.DateCreated).Take(4); customerRecentTags = customerTags.Select(x => x.Tag).ToArray(); } var icdCodes = new List <string>(); if (!customerIcdCodes.IsNullOrEmpty()) { icdCodes = _icdCodesRepository.GetIcdByIds(customerIcdCodes.Select(x => x.IcdCodeId)).Select(x => x.CodeName.ToUpper()).ToList(); } var labName = string.Empty; if (customer.LabId.HasValue) { var lab = _labRepository.GetById(customer.LabId.Value); labName = lab.Name; } return(new PatientWorksheet { Name = customer.Name, CustomerId = customer.CustomerId, Dob = customer.DateOfBirth, Height = customer.Height, Weight = customer.Weight, Gender = customer.Gender, Package = eventPackage, Tests = eventTest, Lab = labName, AlaCarteTest = testForTechnician, AllProducts = products, ProductId = purchasedProduct != null ? purchasedProduct.Id : 0, IcdCodes = icdCodes, PreApporvedTestNames = preApporvedTestNames, EventDate = theEvent.EventDate, CustomTags = customerRecentTags, IsCorporateEvent = theEvent.EventType == EventType.Corporate }); }
public void SaveCustomerOrderHistory(EventCustomer eventCustomer, long corporateUploadId, long oldEventPackageId, long newEventPackageId, IEnumerable <long> oldEventTestIds, IEnumerable <long> newEventTestIds) { var customerOrderHistories = new List <CustomerOrderHistory>(); if (oldEventPackageId > 0) { var model = new CustomerOrderHistory { UploadId = corporateUploadId, EventCustomerId = eventCustomer.Id, EventId = eventCustomer.EventId, CustomerId = eventCustomer.CustomerId, EventPackageId = oldEventPackageId, OrderItemStatusId = (long)OrderItemStatus.Old, }; customerOrderHistories.Add(model); } if (newEventPackageId > 0) { var model = new CustomerOrderHistory { UploadId = corporateUploadId, EventCustomerId = eventCustomer.Id, EventId = eventCustomer.EventId, CustomerId = eventCustomer.CustomerId, EventPackageId = newEventPackageId, OrderItemStatusId = (long)OrderItemStatus.New, }; customerOrderHistories.Add(model); } if (oldEventPackageId > 0 && newEventPackageId <= 0) { var model = new CustomerOrderHistory { UploadId = corporateUploadId, EventCustomerId = eventCustomer.Id, EventId = eventCustomer.EventId, CustomerId = eventCustomer.CustomerId, EventPackageId = oldEventPackageId, OrderItemStatusId = (long)OrderItemStatus.Existing, }; customerOrderHistories.Add(model); } if (oldEventTestIds != null && oldEventTestIds.Any()) { foreach (var eventTestId in oldEventTestIds) { var model = new CustomerOrderHistory { UploadId = corporateUploadId, EventCustomerId = eventCustomer.Id, EventId = eventCustomer.EventId, CustomerId = eventCustomer.CustomerId, EventTestId = eventTestId, OrderItemStatusId = (long)OrderItemStatus.Old, }; customerOrderHistories.Add(model); } } if (newEventTestIds != null && newEventTestIds.Any()) { foreach (var eventTestId in newEventTestIds) { var model = new CustomerOrderHistory { UploadId = corporateUploadId, EventCustomerId = eventCustomer.Id, EventId = eventCustomer.EventId, CustomerId = eventCustomer.CustomerId, EventTestId = eventTestId, OrderItemStatusId = oldEventTestIds != null && oldEventTestIds.Any() && oldEventTestIds.Contains(eventTestId) ? (long)OrderItemStatus.Existing : (long)OrderItemStatus.New, }; customerOrderHistories.Add(model); } } _customerOrderHistoryRepository.Save(customerOrderHistories); }
public EventCustomerAggregate CreateEventCustomerAggregate(EventCustomer eventCustomer) { // Collect all the required data from different repositories. var eventData = _eventRepository.GetById(eventCustomer.EventId); var eventHost = _hostRepository.GetHostForEvent(eventCustomer.EventId); var appointment = _appointmentRepository.GetById(eventCustomer.AppointmentId.Value); var customer = _customerRepository.GetCustomer(eventCustomer.CustomerId); var order = _orderRepository.GetOrder(customer.CustomerId, eventData.Id); var activeOrderDetail = _orderController.GetActiveOrderDetail(order); if (eventHost == null || appointment == null || order == null || activeOrderDetail == null) { return(null); } var package = _packageRepository.GetById(activeOrderDetail.OrderItem.ItemId); string packageName = ""; if (package != null) { packageName = package.Package.Name; } var sourceCode = activeOrderDetail.SourceCodeOrderDetail != null?_sourceCodeRepository.GetSourceCodeById(activeOrderDetail.SourceCodeOrderDetail.SourceCodeId) : null; var paymentTypes = string.Join(",", order.PaymentsApplied.Select(pa => pa.PaymentType.Name).ToArray()); CustomerEventSignUpMode signUpMode = GetEventSignUpMode(eventCustomer); return(new EventCustomerAggregate { AppointmentId = eventCustomer.AppointmentId.Value, AppointmentTime = appointment.StartTime, CustomerAddress = customer.Address, CustomerId = customer.CustomerId, CustomerSignupDate = customer.DateCreated, EventAddress = eventHost.Address, EventCustomerId = eventCustomer.Id, EventDate = eventData.EventDate, EventId = eventData.Id, EventName = eventData.Name, EventSignupDate = eventCustomer.DataRecorderMetaData != null ? eventCustomer.DataRecorderMetaData.DateCreated : default(DateTime), EventStatus = eventData.Status, FirstName = customer.Name != null ? customer.Name.FirstName : string.Empty, IsPaid = order.TotalAmountPaid >= order.DiscountedTotal, LastName = customer.Name != null ? customer.Name.LastName : string.Empty, MarketingSource = eventCustomer.MarketingSource, MiddleName = customer.Name != null ? customer.Name.MiddleName : string.Empty, PackageName = packageName, PackageCost = activeOrderDetail.Price, PaidAmount = order.TotalAmountPaid, PaymentAmount = order.UndiscountedTotal, PaymentNet = order.DiscountedTotal, PaymentType = paymentTypes, SignUpMarketingSource = eventCustomer.MarketingSource, SignUpMode = signUpMode, SourceCode = sourceCode != null ? sourceCode.CouponCode : string.Empty, UnpaidAmount = order.TotalAmountPaid - order.DiscountedTotal }); }
private BioCheckJsonViewModel GenerateBioCheckResponseModel(EventCustomer eventCustomer, Customer customer, IEnumerable <HealthAssessmentAnswer> customerHealth, Event eventData, ILogger logger, IEnumerable <EventCustomerResultTrale> eventCustomerResultTrales, IEnumerable <CustomerTrale> customerTrales, CorporateAccount account) { var isNewResultFlow = eventData.EventDate >= _settings.ResultFlowChangeDate; var testResult = _bioCheckAssessmentTestResultRepository.GetTestResults(customer.CustomerId, eventCustomer.EventId, isNewResultFlow); var kynLabValues = _kynLabValuesRepository.Get(eventCustomer.Id, (long)TestType.MyBioCheckAssessment); var basicBioMeric = _basicBiometricRepository.Get(eventCustomer.EventId, eventCustomer.CustomerId); var traleResponse = eventCustomerResultTrales.FirstOrDefault(x => x.EventCustomerResultId == eventCustomer.Id); var traleUser = customerTrales.FirstOrDefault(x => x.CustomerId == eventCustomer.CustomerId); var myBioCheck = testResult as MyBioAssessmentTestResult; if (myBioCheck != null && (myBioCheck.TestNotPerformed == null || myBioCheck.TestNotPerformed.TestNotPerformedReasonId <= 0) && (testResult.UnableScreenReason == null || testResult.UnableScreenReason.Count <= 0)) { if (traleResponse == null) { traleResponse = new EventCustomerResultTrale { EventCustomerResultId = eventCustomer.Id, DateCreated = DateTime.Now, ResponseId = Guid.NewGuid().ToString() }; _eventCustomerResultTraleRepository.Save(traleResponse); } if (traleUser == null) { traleUser = new CustomerTrale { CustomerId = customer.CustomerId, DateCreated = DateTime.Now, UserId = Guid.NewGuid().ToString() }; _customerTraleRepository.Save(traleUser); } var biocheckResponse = new List <BioCheckResponseModel>(); SetCustomerHafResponse(customerHealth, biocheckResponse); //Q1_1 to Q8_4 SetCustomerBioMetricResponse(customer, biocheckResponse); //Q9 to Q10 SetLabValus(biocheckResponse, myBioCheck, kynLabValues, basicBioMeric, customer); //Q11 to Q21 SetA1CTestData(biocheckResponse, eventCustomer, isNewResultFlow); //Q22 SetAwvBoneMassTestData(biocheckResponse, eventCustomer, isNewResultFlow); // Q23 SetPsaTestData(biocheckResponse, eventCustomer, isNewResultFlow); // Q24 SetNicotineTestData(biocheckResponse); // Q25-27 SetBmiData(biocheckResponse, customer); // Q28 SetSmokerData(biocheckResponse, kynLabValues); //Q60 var bioCheckJsonViewModel = new BioCheckJsonViewModel { ResponseId = traleResponse.ResponseId, UserId = traleUser.UserId, FirstName = customer.Name.FirstName, LastName = customer.Name.LastName, DoB = customer.DateOfBirth, CreatedAt = DateTime.Now, CompletedAt = eventData.EventDate, Email = (customer.Email == null || string.IsNullOrEmpty(customer.Email.ToString())) ? string.Empty : customer.Email.ToString(), Gender = customer.Gender == Gender.Female ? FemaleGender : customer.Gender == Gender.Male ? MaleGender : string.Empty, GroupId = account != null ? account.Id : eventData.Id, GroupName = account != null ? account.Name : eventData.Name, Responses = biocheckResponse.ToArray(), UniqueId = customer.CustomerId.ToString(), Exfld03 = "Kaiser" }; return(bioCheckJsonViewModel); } //Todo: create XML for Customers JSON Not Created; logger.Info("Customer's My bio-check Result not Found"); return(null); }
public string Update([FromBody] EventCustomer customer) { var result = repository.Update(customer); return(result); }
public string Add([FromBody] EventCustomer customer) { var result = repository.Add(customer); return(result); }
public EventCustomerResultStatusListModel Create(Event theEvent, Host eventHost, IEnumerable <EventTest> eventTests, EventCustomer eventCustomer, Customer customer, IEnumerable <EventPackage> packages, IEnumerable <OrderedPair <long, long> > ecIdPackageIdpairs, IEnumerable <OrderedPair <long, long> > ecIdTestIdPairs, IEnumerable <ResultArchiveLog> parsingResults, CustomerResultStatusViewModel customerResult, EventCustomerResult eventCustomerResult, bool isNewResultFlow, CorporateAccount account, QuestionnaireType questionnaireType) { var model = new EventCustomerResultStatusListModel { EventId = theEvent.Id, EventDate = theEvent.EventDate, Address = Mapper.Map <Address, AddressViewModel>(eventHost.Address), Host = eventHost.OrganizationName, EventTests = eventTests.Where(et => et.Test.IsRecordable).Select(et => et.Test).ToArray() }; var orderPurchased = ""; var packageIdPurchased = ecIdPackageIdpairs.Where(p => p.FirstValue == eventCustomer.Id).Select(p => p.SecondValue).SingleOrDefault(); var customerTests = new List <Test>(); if (packageIdPurchased > 0) { var package = packages.Where(p => p.Id == packageIdPurchased).Select(p => p.Package).SingleOrDefault(); orderPurchased = package.Name; customerTests.AddRange(package.Tests); } var testIdsPurchased = ecIdTestIdPairs.Where(p => p.FirstValue == eventCustomer.Id).Select(p => p.SecondValue).ToArray(); if (testIdsPurchased.Count() > 0) { if (!string.IsNullOrEmpty(orderPurchased)) { orderPurchased += " + "; } var addOnTests = eventTests.Where(et => testIdsPurchased.Contains(et.Id)).Select(et => et.Test).ToArray(); orderPurchased += string.Join(" + ", addOnTests.Select(t => t.Name)); customerTests.AddRange(addOnTests); } var isHraQuestionnaire = questionnaireType == QuestionnaireType.HraQuestionnaire; var isChatQuestionnaire = questionnaireType == QuestionnaireType.ChatQuestionnaire; var hasPurchasedEawvTest = isHraQuestionnaire && customerTests.Any(x => x.Id == (long)TestType.eAWV); var hasPurchasedQVTest = isChatQuestionnaire && customerTests.Any(x => x.Id == (long)TestType.Qv); var newCustomerResults = new List <CustomerResultStatusViewModel>(); if (customerResult == null) { customerResult = new CustomerResultStatusViewModel { CustomerId = eventCustomer.CustomerId }; } newCustomerResults.Add(customerResult); customerResult.CustomerName = customer.NameAsString; customerResult.CustomerFirstName = customer.Name.FirstName; customerResult.CustomerLastName = customer.Name.LastName; customerResult.OrderPurchased = orderPurchased; var eventTestResults = customerTests.Select(ct => new TestResultStatusViewModel { TestId = ct.Id, Label = ct.Name, Alias = ct.Alias, ResultState = (isNewResultFlow ? (int)NewTestResultStateNumber.NoResults : (int)TestResultStateNumber.NoResults), State = TestResultStateLabel.NoResults }).ToArray(); bool isClinicalFormGenerated = false; bool isResultPdfGenerarted = false; var isChartSignedOff = false; var isIpResultGenerated = false; if (isChatQuestionnaire) { isChartSignedOff = hasPurchasedQVTest || (eventCustomerResult != null && eventCustomerResult.SignedOffBy.HasValue); } else { isChartSignedOff = eventCustomerResult.SignedOffBy.HasValue || !hasPurchasedEawvTest; } if (eventCustomerResult != null) { isClinicalFormGenerated = eventCustomerResult.IsClinicalFormGenerated; isResultPdfGenerarted = eventCustomerResult.IsResultPdfGenerated; //isChartSignedOff = isChatQuestionnaire ? eventCustomerResult.SignedOffBy.HasValue : eventCustomerResult.SignedOffBy.HasValue || !hasPurchasedEawvTest; isIpResultGenerated = eventCustomerResult.IsIpResultGenerated; } customerResult.HipaaStatus = eventCustomer.HIPAAStatus; customerResult.PartnerRelease = eventCustomer.PartnerRelease; customerResult.IsPremiumVersionPdfGenerated = isResultPdfGenerarted; customerResult.IsClinicalFormGenerated = isClinicalFormGenerated; customerResult.IsChartSigned = isChartSignedOff; customerResult.IsIpResultGenerated = isIpResultGenerated; customerResult.IsCodingCompleted = eventCustomerResult != null && eventCustomerResult.CodedBy.HasValue; customerResult.InvoicingDate = eventCustomerResult != null ? eventCustomerResult.AcesApprovedOn : null; customerResult.TestResults = CompareEventTestResults(customerResult.TestResults, eventTestResults, parsingResults, isNewResultFlow, customerResult.IsChartSigned); model.Customers = newCustomerResults; return(model); }
private void SetAwvBoneMassTestData(List <BioCheckResponseModel> bioCheckResponse, EventCustomer eventCustomer) { _testResultRepository = new AwvBoneMassTestRepository(); var testResult = _testResultRepository.GetTestResults(eventCustomer.CustomerId, eventCustomer.EventId); if (testResult != null) { var awvBoneMassTestResult = testResult as AwvBoneMassTestResult; if (awvBoneMassTestResult.EstimatedTScore != null) { if (awvBoneMassTestResult.EstimatedTScore.Reading != null) { bioCheckResponse.Add(new BioCheckResponseModel("Q23", awvBoneMassTestResult.EstimatedTScore.Reading.Value.ToString())); } } } else { testResult = _testResultRepository.GetTestResults(eventCustomer.CustomerId, eventCustomer.EventId); _testResultRepository = new OsteoporosisTestRepository(); if (testResult != null) { var osteoporosisTestResult = testResult as OsteoporosisTestResult; if (osteoporosisTestResult.EstimatedTScore != null) { if (osteoporosisTestResult.EstimatedTScore.Reading != null) { bioCheckResponse.Add(new BioCheckResponseModel("Q23", osteoporosisTestResult.EstimatedTScore.Reading.Value.ToString())); } } } } }
public CheckListFormEditModel GetCustomerCheckListEdtiModel(Customer customer, CorporateAccount account, EventCustomer eventCustomer) { var preApporvedTestNames = _eventCustomerPreApprovedTestRepository.GetPreApprovedTestNameByEventCustomerId(eventCustomer.Id); var result = _eventCustomerResultRepository.GetById(eventCustomer.Id); var template = _checkListTemplateRepository.GetTemplateByEventId(eventCustomer.EventId); if (template == null && account.CheckListTemplateId.HasValue) { template = _checkListTemplateRepository.GetById(account.CheckListTemplateId.Value); } else if (template == null) { template = _checkListTemplateRepository.GetDefaultTemplate(); } var templateGroup = _checkListGroupRepository.GetAllGroups(); var checkListQuestion = _checkListQuestionRepository.GetAllQuestionsForTemplateId(template.Id); var checklistGroupQuestions = _checkListTemplateRepository.GetAllGroupQuestionsForTemplateId(template.Id); var version = _checkListAnswerRepository.GetLatestVersion(eventCustomer.Id); var answerList = new List <CheckListAnswer>(); if (version > 0) { answerList = _checkListAnswerRepository.GetAllAnswerByEventCustomerId(eventCustomer.Id, version).ToList(); } return(new CheckListFormEditModel { CustomerId = customer.CustomerId, PreApporvedTestNames = preApporvedTestNames, EventId = eventCustomer.EventId, Name = customer.Name, DoB = customer.DateOfBirth, //HealthPlanName = (template.HealthPlanId.HasValue && account != null) ? account.Name : string.Empty, EventCustomerId = eventCustomer.Id, CheckListQuestion = _checkListQuestionAnswerEditModelFactory.CheckListQuestionAnswerEditModel(checkListQuestion, answerList, templateGroup, checklistGroupQuestions), IsEditable = result == null || result.ResultState < (long)TestResultStateNumber.PreAudit, Gender = customer.Gender }); }
public SurveyFormEditModel GetCustomerSurveyFormEditModel(Customer customer, CorporateAccount account, EventCustomer eventCustomer) { var template = _SurveyTemplateRepository.GetTemplateByEventId(eventCustomer.EventId); if (template == null && account.SurveyTemplateId.HasValue) { template = _SurveyTemplateRepository.GetById(account.SurveyTemplateId.Value); } else if (template == null) { template = _SurveyTemplateRepository.GetDefaultTemplate(); } if (template == null) { return new SurveyFormEditModel { SurveyQuestion = new List <SurveyQuestionAnswerEditModel>() } } ; var surveyQuestion = _SurveyQuestionRepository.GetAllQuestionsForTemplateId(template.Id); var answerList = _surveyAnswerRepository.GetSurveyAnswerByEventCustomerId(eventCustomer.Id).ToList(); return(new SurveyFormEditModel { CustomerId = customer.CustomerId, EventId = eventCustomer.EventId, Name = customer.Name, DoB = customer.DateOfBirth, EventCustomerId = eventCustomer.Id, SurveyQuestion = _SurveyQuestionAnswerEditModelFactory.SurveyQuestionAnswerEditModel(surveyQuestion, answerList), IsEditable = false, Gender = customer.Gender }); } }
protected void Page_Load(object sender, EventArgs e) { // Initial Code just to hide left hand side panel for this page. var masterPage = (TecnicianManualEntry)Page.Master; if (masterPage != null) { masterPage.HideLeftContainer = true; } var accountRepository = IoC.Resolve <ICorporateAccountRepository>(); var account = accountRepository.GetbyEventId(EventId); CaptureHaf = (account == null || account.CaptureHaf); CapturePcpConsent = (account != null && account.CapturePcpConsent); IsHealthPlanEvent = (account != null && account.IsHealthPlan); //var communicationRepository = IoC.Resolve<ICommunicationRepository>(); EventCustomer eventCustomer = null; //var lastCommentAdded = communicationRepository.GetCommentsforPhysician(CustomerId, EventId); if (!IsPostBack) { var setting = IoC.Resolve <ISettings>(); var eventsRepository = IoC.Resolve <IEventRepository>(); var eventData = eventsRepository.GetById(EventId); eventCustomer = IoC.Resolve <IEventCustomerRepository>().Get(EventId, CustomerId); var eventCustomerId = eventCustomer.Id; var purchasedTest = IoC.Resolve <ITestResultService>().TestPurchasedByCustomer(eventCustomerId); var iseawvTestPurchased = IsEawvTestPurchased = purchasedTest != null?purchasedTest.Any(x => x.Id == (long)TestType.eAWV) : false; IsNewResultFlow = eventData.EventDate >= setting.ResultFlowChangeDate; if (IsNewResultFlow) { ClientScript.RegisterHiddenField("IsNewResultFlowInputHidden", "true"); } else { ClientScript.RegisterHiddenField("IsNewResultFlowInputHidden", "false"); } var questionnaireType = QuestionnaireType.None; if (account != null && account.IsHealthPlan && eventData != null) { questionnaireType = IoC.Resolve <IAccountHraChatQuestionnaireHistoryServices>().QuestionnaireTypeByAccountIdandEventDate(account.Id, eventData.EventDate); } var isShowHraQuestioner = questionnaireType == QuestionnaireType.HraQuestionnaire; if (eventData.EventDate < setting.ChecklistChangeDate) { ShowCheckList = (account != null && account.PrintCheckList); } var mediaLocation = IoC.Resolve <IMediaRepository>().GetResultMediaFileLocation(CustomerId, EventId); ClientScript.RegisterClientScriptBlock(Page.GetType(), "js_Location_Url", "function getLocationPrefix() { return '" + mediaLocation.PhysicalPath.Replace("\\", "\\\\") + "'; } function getUrlPrefix() { return '" + mediaLocation.Url + "'; }", true); GetConductedbyData(eventData); FillStates(); var currentSession = IoC.Resolve <ISessionContext>(); ClientScript.RegisterHiddenField("hfTechnicianId", currentSession.UserSession.CurrentOrganizationRole.OrganizationRoleUserId.ToString()); ClientScript.RegisterHiddenField("hfOrganizationId", currentSession.UserSession.CurrentOrganizationRole.OrganizationId.ToString()); string pageHeading = ""; var basicBiometricCutOfDate = setting.BasicBiometricCutOfDate; var hideBasicBiometric = (eventData.EventDate.Date >= basicBiometricCutOfDate); ShowHideFastingStatus = (eventData.EventDate.Date >= setting.FastingStatusDate); BasicBiometric.ShowByCutOffDate = !hideBasicBiometric; TestSection.SetSectionShowHide(hideBasicBiometric); if (currentSession != null && currentSession.UserSession != null && currentSession.UserSession.CurrentOrganizationRole != null) { RoleId = currentSession.UserSession.CurrentOrganizationRole.GetSystemRoleId; } if (Mode == EditResultMode.ResultCorrection) { var result = new CommunicationRepository().GetPhysicianandCommentsforFranchisee(CustomerId, EventId); if (!string.IsNullOrEmpty(result.SecondValue)) { PhysicianCommentsDiv.Visible = true; PhysicianCommentsMessageBox.ShowErrorMessage("<b><u>Physician Comments:</u> </b>" + result.SecondValue); } updateWithCorrectionDivTop.Visible = true; saveDivTop.Visible = false; approveDivtop.Visible = false; updateWithCorrectionsDivbottom.Visible = true; saveDivbottom.Visible = false; approveDivbottom.Visible = false; var physicianService = IoC.Resolve <IPhysicianAssignmentService>(); var physicianIds = physicianService.GetPhysicianIdsAssignedtoaCustomer(EventId, CustomerId); if (physicianIds != null && result.FirstValue > 0 && physicianIds.Count() == 2 && physicianIds.ElementAt(1) == result.FirstValue) { SendToOvereadPhysician = true; } ClientScript.RegisterHiddenField("ResultStatusInputHidden", "4"); pageHeading = "Results Update/Correction"; } if (Mode == EditResultMode.ResultPreAudit) // && isTechTeamConfigured == true) { ClientScript.RegisterHiddenField("ResultStatusInputHidden", "4"); pageHeading = "Results Pre Audit"; saveDivTop.Visible = false; saveDivbottom.Visible = false; if (TestSection.ContainsReviewableTests && !IsNewResultFlow) { skipevaluationdivbottom.Visible = true; } var customerHealthInfo = IoC.Resolve <IHealthAssessmentRepository>().Get(CustomerId, EventId); if (!CaptureHaf || (customerHealthInfo != null && customerHealthInfo.Any())) { ClientScript.RegisterStartupScript(Page.GetType(), "js_setmedicalhistory", "setMedicalHistory();", true); } var defaultPhysician = IoC.Resolve <IPhysicianRepository>().GetDefaultPhysicianforEvent(EventId); ClientScript.RegisterHiddenField("DefaultPhysician", defaultPhysician.ToString()); //var eventCustomerId = IoC.Resolve<IEventCustomerRepository>().Get(EventId, CustomerId).Id; var isCustomerSkipped = IoC.Resolve <IPhysicianEvaluationRepository>().IsMarkedReviewSkip(eventCustomerId); if (isCustomerSkipped) { ClientScript.RegisterStartupScript(Page.GetType(), "js_markcustomerskipped", "$('#skipevaluationcheckbox').attr('checked', true);", true); } } else if (Mode == EditResultMode.ResultEntry) { if (IsNewResultFlow) { ClientScript.RegisterHiddenField("ResultStatusInputHidden", "2"); } else { ClientScript.RegisterHiddenField("ResultStatusInputHidden", "3"); } pageHeading = "Results Edit/Entry"; approveDivtop.Visible = false; approveDivbottom.Visible = false; } HeadingSpan.InnerHtml = pageHeading; if (Request.UrlReferrer.AbsolutePath.ToLower().IndexOf("auditresultentry.aspx") < 0) { Session["ReferredUrlFirstTimeOpen"] = Request.UrlReferrer; } CreateIFJSArrays(); CreateJsArrayforIfuCs(); //var eventCustomerRepository = IoC.Resolve<IEventCustomerRepository>(); var goBackToResultEnteryPage = false; EventCustomerResult eventCustomerResult = IoC.Resolve <IEventCustomerResultRepository>().GetByCustomerIdAndEventId(CustomerId, EventId);; if ((Mode == EditResultMode.ResultEntry)) { if (IsCustomerNoShowOrLeftWithoutScreening(eventCustomer)) { ClientScript.RegisterStartupScript(Page.GetType(), "js_NextCustomer", "customerMarkNoShow();", true); goBackToResultEnteryPage = true; } else { var nextCustomerId = new TestResultRepository().GetNextCustomerEntryandAudit(EventId, CustomerId, IsNewResultFlow); ClientScript.RegisterStartupScript(Page.GetType(), "js_NextCustomer", "setnextCustomerId(" + nextCustomerId + ");", true); } } else { var isChartSignedOff = true; var isQvTestPurchased = purchasedTest != null?purchasedTest.Any(x => x.Id == (long)TestType.Qv) : false; var isHraQuestionnaire = questionnaireType == QuestionnaireType.HraQuestionnaire; if (questionnaireType == QuestionnaireType.ChatQuestionnaire) { isChartSignedOff = isQvTestPurchased || (eventCustomerResult != null && eventCustomerResult.SignedOffBy.HasValue); } else { var isEawvTestNotPerformed = IoC.Resolve <ITestNotPerformedRepository>().IsTestNotPerformed(eventCustomer.Id, (long)TestType.eAWV); isChartSignedOff = (eventCustomerResult != null && eventCustomerResult.SignedOffBy.HasValue) || !isShowHraQuestioner || !iseawvTestPurchased || isEawvTestNotPerformed; } IsChartSignedOff = (eventCustomerResult != null && eventCustomerResult.SignedOffBy.HasValue); if (!IsNewResultFlow || isChartSignedOff) { if (IsCustomerNoShowOrLeftWithoutScreening(eventCustomer)) { ClientScript.RegisterStartupScript(Page.GetType(), "js_NextCustomer", "customerMarkNoShow();", true); goBackToResultEnteryPage = true; } else { long nextCustomerId = 0; if (IsNewResultFlow && account != null && (questionnaireType != QuestionnaireType.None)) { nextCustomerId = new TestResultRepository().GetNextCustomerForPreAudit(EventId, CustomerId, isHraQuestionnaire); } else { nextCustomerId = new TestResultRepository().GetNextCustomerEntryandAudit(EventId, CustomerId, IsNewResultFlow); } ClientScript.RegisterStartupScript(Page.GetType(), "js_NextCustomer", "setnextCustomerId(" + nextCustomerId + ");", true); } } else { ClientScript.RegisterStartupScript(Page.GetType(), "js_NextCustomer", "customerChartIsUnsigned();", true); } //if (eventCustomerResult != null && IsNewResultFlow) //{ // var notes = communicationRepository.GetNotesForReversal(eventCustomerResult.Id); // if (!string.IsNullOrWhiteSpace(notes)) // { // revertBackNotes.Visible = true; // ReasonToRevert.InnerText = notes; // } //} } if (!goBackToResultEnteryPage) { if (eventCustomerResult != null) { //LogAudit(ModelType.View, eventCustomerResult); var priorityInQueue = IoC.Resolve <IPriorityInQueueRepository>().GetByEventCustomerResultId(eventCustomerResult.Id); if (priorityInQueue != null && priorityInQueue.InQueuePriority > 0) { if (!CurrentOrgUser.CheckRole((long)Roles.Technician)) { PriorityInQueueCheckbox.Checked = true; } if (priorityInQueue.NoteId == null) { return; } var noteText = IoC.Resolve <INotesRepository>().Get(priorityInQueue.NoteId.Value); if (noteText != null && !string.IsNullOrEmpty(noteText.Text)) { PriorityInQueueText.InnerText = noteText.Text; PriorityInQueueReasonDisplayDiv.Style.Add(HtmlTextWriterStyle.Display, "block"); } else if (!CurrentOrgUser.CheckRole((long)Roles.Technician)) { PriorityInQueueReasonDisplayDiv.Style.Add(HtmlTextWriterStyle.Display, "block"); } } else { PriorityInQueueCheckbox.Checked = false; PriorityInQueueReasonDisplayDiv.Style.Add(HtmlTextWriterStyle.Display, "none"); } } else { PriorityInQueueCheckbox.Checked = false; PriorityInQueueReasonDisplayDiv.Style.Add(HtmlTextWriterStyle.Display, "none"); } } } }
private bool IsCustomerNoShowOrLeftWithoutScreening(EventCustomer eventCustomer) { return(eventCustomer.NoShow || eventCustomer.LeftWithoutScreeningReasonId.HasValue); }
public MemberStatusListModel Create(IEnumerable <Customer> customers, IEnumerable <EventCustomer> eventCustomers, EventVolumeListModel eventListModel, IEnumerable <Order> orders, IEnumerable <OrderedPair <long, string> > packages, IEnumerable <OrderedPair <long, string> > tests, IEnumerable <Core.CallCenter.Domain.Call> calls, IEnumerable <CorporateCustomerCustomTag> customTags, IEnumerable <PrimaryCarePhysician> primaryCarePhysicians, IEnumerable <Notes> doNotContactReasonNotes, IEnumerable <OrderedPair <long, string> > customersPreApprovedTests, IEnumerable <OrderedPair <long, string> > customersPreApprovedPackages, IEnumerable <DirectMail> directMails, IEnumerable <Appointment> appointments, IEnumerable <ShippingDetail> shipingDetails, IEnumerable <OrderedPair <long, long> > shippingDetailIdEventCustomerIdPairs, IEnumerable <ShippingOption> shippingOptions, ShippingOption pcpShippingOptions, IEnumerable <CorporateAccount> corporateAccounts, IEnumerable <AccountAdditionalFields> accountAdditionalFields, DateTime fromDate, DateTime toDate, IEnumerable <ProspectCustomer> prospectCustomers, IEnumerable <CustomerPredictedZip> customerPredictedZips, IEnumerable <CustomerEligibility> customerEligibilityList, IEnumerable <CustomerTargeted> customerTargetedList, IEnumerable <Core.Medical.Domain.ActivityType> activityTypes) { var model = new MemberStatusListModel(); var memberStatusModels = new List <MemberStatusModel>(); foreach (var customer in customers) { var customerCalls = calls.Where(c => c.CalledCustomerId == customer.CustomerId); var callDetail = customerCalls.OrderByDescending(x => x.CallDateTime).FirstOrDefault(); var customerDirectMails = directMails.Where(x => x.CustomerId == customer.CustomerId); var customerPredictedZip = customerPredictedZips != null?customerPredictedZips.Where(x => x.CustomerId == customer.CustomerId) : null; var customerEligibility = customerEligibilityList.FirstOrDefault(x => x.CustomerId == customer.CustomerId); var customerTargeted = customerTargetedList.FirstOrDefault(x => x.CustomerId == customer.CustomerId); var isEligible = "N/A"; var corporateCustomTags = "N/A"; if (customerEligibility != null && customerEligibility.IsEligible.HasValue) { isEligible = customerEligibility.IsEligible.Value ? "Yes" : "No"; } var prospectCustomer = prospectCustomers.FirstOrDefault(p => p.CustomerId == customer.CustomerId); if (customTags != null && customTags.Any()) { var customerCustomTags = customTags.Where(ct => ct.CustomerId == customer.CustomerId).Select(ct => ct.Tag).ToArray(); if (customerCustomTags.Any()) { corporateCustomTags = string.Join(", ", customerCustomTags); } } var pcp = primaryCarePhysicians.Where(p => p.CustomerId == customer.CustomerId).Select(p => p).FirstOrDefault(); var customerPreApprovedTest = "N/A"; if (customersPreApprovedTests != null && customersPreApprovedTests.Any()) { var customerTests = customersPreApprovedTests.Where(x => x.FirstValue == customer.CustomerId); if (customerTests != null && customerTests.Any()) { var preApproveTestTemp = customerTests.Select(x => string.Format("\"{0}\"", x.SecondValue)).ToArray(); customerPreApprovedTest = string.Join(", ", preApproveTestTemp); } } var customerPreApprovedPakages = "N/A"; if (customersPreApprovedPackages != null && customersPreApprovedPackages.Any()) { var customerPackages = customersPreApprovedPackages.Where(x => x.FirstValue == customer.CustomerId); if (customerPackages != null && customerPackages.Any()) { var preApproveTestTemp = customerPackages.Select(x => string.Format("\"{0}\"", x.SecondValue)).ToArray(); customerPreApprovedPakages = string.Join(", ", preApproveTestTemp); } } var displayFielAandAdditionalFieldsPairs = new List <OrderedPair <string, string> >(); if (corporateAccounts != null && corporateAccounts.Any() && !string.IsNullOrEmpty(customer.Tag) && accountAdditionalFields != null && accountAdditionalFields.Any()) { var corporateAccount = corporateAccounts.FirstOrDefault(a => a.Tag == customer.Tag); if (corporateAccount != null) { var additionalFields = accountAdditionalFields.Where(x => x.AccountId == corporateAccount.Id).ToArray(); foreach (var additionalField in additionalFields) { displayFielAandAdditionalFieldsPairs.Add(new OrderedPair <string, string>(additionalField.DisplayName, GetCustomersAdditionFiledValue(customer, (AdditionalFieldsEnum)additionalField.AdditionalFieldId))); } } } string activityType = "N/A"; if (customer.ActivityId.HasValue && !activityTypes.IsNullOrEmpty()) { activityType = activityTypes.Single(x => x.Id == customer.ActivityId.Value).Name; } var isTargetedMember = "N/A"; if (customerTargeted != null && customerTargeted.IsTargated.HasValue) { isTargetedMember = customerTargeted.IsTargated.Value ? "Yes" : "No"; } var customerExportModel = new MemberStatusModel { CustomerId = customer.CustomerId, FirstName = customer.Name.FirstName, MiddleName = customer.Name.MiddleName, LastName = customer.Name.LastName, PhoneHome = customer.HomePhoneNumber != null?customer.HomePhoneNumber.ToString() : string.Empty, Gender = customer.Gender.ToString(), DateofBirth = customer.DateOfBirth, Address1 = customer.Address.StreetAddressLine1, Address2 = customer.Address.StreetAddressLine2, City = customer.Address.City, State = customer.Address.State, Zip = customer.Address.ZipCode.Zip, Email = customer.Email != null?customer.Email.ToString() : string.Empty, Tag = string.IsNullOrEmpty(customer.Tag) ? "N/A" : customer.Tag, MemberId = string.IsNullOrEmpty(customer.InsuranceId) ? "N/A" : customer.InsuranceId, IsEligible = isEligible, IsTargetedMember = isTargetedMember, CustomTag = corporateCustomTags, MedicarePlanName = string.IsNullOrEmpty(customer.MedicareAdvantagePlanName) ? "N/A" : customer.MedicareAdvantagePlanName, Hicn = string.IsNullOrEmpty(customer.Hicn) ? "N/A" : customer.Hicn, Mbi = string.IsNullOrEmpty(customer.Mbi) ? "N/A" : customer.Mbi, Market = string.IsNullOrEmpty(customer.Market) ? "N/A" : customer.Market, GroupName = string.IsNullOrEmpty(customer.GroupName) ? "N/A" : customer.GroupName, PreApprovedTest = customerPreApprovedTest, PreApprovedPackage = customerPreApprovedPakages, AdditionalFields = displayFielAandAdditionalFieldsPairs, Activity = activityType, PredictedZip = customerPredictedZip != null?string.Join(", ", customerPredictedZip.Select(x => x.PredictedZip)) : "N/A", AcesId = customer.AcesId, Product = customer.ProductTypeId.HasValue && customer.ProductTypeId.Value > 0 ? ((ProductType)customer.ProductTypeId.Value).GetDescription() : "N/A" }; GetRestrictionData(customerExportModel, customer, fromDate, toDate, doNotContactReasonNotes); if (pcp != null) { customerExportModel.PcpFirstName = pcp.Name.FirstName; customerExportModel.PcpLastName = pcp.Name.LastName; customerExportModel.PcpNpi = string.IsNullOrEmpty(pcp.Npi) ? "N/A" : pcp.Npi; if (pcp.Address != null && !pcp.Address.IsEmpty()) { customerExportModel.PcpAddress1 = pcp.Address.StreetAddressLine1; customerExportModel.PcpAddress2 = pcp.Address.StreetAddressLine2; customerExportModel.PcpCity = pcp.Address.City; customerExportModel.PcpState = pcp.Address.State; customerExportModel.PcpZip = pcp.Address.ZipCode.Zip; } customerExportModel.PcpFax = pcp.Fax != null?pcp.Fax.ToString() : string.Empty; customerExportModel.PcpPhone = pcp.Primary != null?pcp.Primary.ToString() : string.Empty; } EventCustomer eventCustomer = null; EventVolumeModel eventModel = null; EventVolumeModel lastScreeningDate = null; var scheduledStatus = ScheduledStatus.NotScheduled; if (eventCustomers != null && eventCustomers.Any()) { //var startDate = new DateTime(DateTime.Today.Year, 1, 1); //var endDate = new DateTime(DateTime.Today.Year, 12, 31); eventCustomer = (from ec in eventCustomers join e in eventListModel.Collection on ec.EventId equals e.EventCode where ec.CustomerId == customer.CustomerId orderby e.EventDate descending select ec).FirstOrDefault(); var appointmentIds = eventCustomers.Where(ec => ec.AppointmentId.HasValue && ec.CustomerId == customer.CustomerId).Select(x => x.AppointmentId.Value).ToArray(); var hasBeenScheduledForCurrentyear = (from ec in eventCustomers join e in eventListModel.Collection on ec.EventId equals e.EventCode where ec.CustomerId == customer.CustomerId select ec).Any(); lastScreeningDate = (from a in appointments join e in eventListModel.Collection on a.EventId equals e.EventCode join ec in eventCustomers on e.EventCode equals ec.EventId where a.CheckInTime != null && a.CheckOutTime != null && appointmentIds.Contains(a.Id) && !ec.NoShow && !ec.LeftWithoutScreeningReasonId.HasValue orderby e.EventDate descending select e).FirstOrDefault(); if (hasBeenScheduledForCurrentyear) { scheduledStatus = ScheduledStatus.Scheduled; } if (eventCustomer != null) { if (shipingDetails != null && shipingDetails.Any()) { var shipingIds = shippingDetailIdEventCustomerIdPairs.Where(m => m.SecondValue == eventCustomer.Id).Select(m => m.FirstValue); if (shipingIds != null && shipingIds.Any()) { var shipingDetail = shipingDetails.Where(m => shipingIds.Contains(m.Id) && m.Status == ShipmentStatus.Shipped); if (shipingDetail != null && shipingDetail.Any()) { var customerResultShipDetail = (from s in shipingDetail join so in shippingOptions on s.ShippingOption.Id equals so.Id orderby s.ShipmentDate descending select s).FirstOrDefault(); var pcpResultShipDetail = (from s in shipingDetail where s.ShippingOption.Id == pcpShippingOptions.Id select s).FirstOrDefault(); if (pcpResultShipDetail != null) { customerExportModel.PCPResultShipedDate = pcpResultShipDetail.ShipmentDate; } if (customerResultShipDetail != null) { customerExportModel.CustomerResultShipedDate = customerResultShipDetail.ShipmentDate; } } } } var order = orders.FirstOrDefault(o => o.EventId == eventCustomer.EventId && o.CustomerId == eventCustomer.CustomerId); if (order != null) { var package = packages.FirstOrDefault(p => p.FirstValue == order.Id); var test = tests.Where(p => p.FirstValue == order.Id).ToList(); var productPurchased = string.Empty; if (package != null && !test.IsNullOrEmpty()) { productPurchased = package.SecondValue + " + " + string.Join(" + ", test.Select(t => t.SecondValue).ToArray()); } else if (!test.IsNullOrEmpty()) { productPurchased = string.Join(" + ", test.Select(t => t.SecondValue).ToArray()); } else if (package != null) { productPurchased = package.SecondValue; } customerExportModel.Package = productPurchased; } eventModel = eventListModel.Collection.FirstOrDefault(e => e.EventCode == eventCustomer.EventId); if (eventModel != null) { customerExportModel.EventId = eventModel.EventCode; customerExportModel.EventName = eventModel.Location; customerExportModel.EventDate = eventModel.EventDate; customerExportModel.EventAddress1 = eventModel.StreetAddressLine1; customerExportModel.EventAddress2 = eventModel.StreetAddressLine2; customerExportModel.EventCity = eventModel.City; customerExportModel.EventState = eventModel.State; customerExportModel.EventZip = eventModel.Zip; customerExportModel.Pod = eventModel.Pod; customerExportModel.CompletionStatus = GetCompletionStatus(eventCustomer, eventModel.EventDate, lastScreeningDate); customerExportModel.RegistrationDate = eventCustomer.DataRecorderMetaData.DateCreated; } } } customerExportModel.CurrentStatus = GetCurrentStatus(customer, customerDirectMails, eventCustomer, eventModel, lastScreeningDate, prospectCustomer, fromDate, toDate, customerEligibility); customerExportModel.ScheduledStatus = scheduledStatus; if (callDetail != null) { int?dispositionId = null; if (!string.IsNullOrEmpty(callDetail.Disposition)) { ProspectCustomerTag tag; Enum.TryParse(callDetail.Disposition, true, out tag); dispositionId = (int)tag; } customerExportModel.CurrentOutboundCallOutcome = ((CallStatus)callDetail.Status).GetDescription(); if (dispositionId.HasValue) { customerExportModel.CurrentOutboundCallDisposition = ((ProspectCustomerTag)dispositionId.Value).GetDescription(); } customerExportModel.CurrentOutboundCallCategory = GetCallCategoryByStatus(callDetail.Status, dispositionId); } SetReportModelOutReachType(customerExportModel, customerCalls, customerDirectMails, customer.CustomerId); memberStatusModels.Add(customerExportModel); } model.Collection = memberStatusModels; return(model); }
public override async Task GetAllWorksAsync() { List <EventCustomer> eventCustomersList = new List <EventCustomer>(); EventCustomer eventCustomerSaved = null; Customer customerSaved = null; Event EventSaved = null; var options = new DbContextOptionsBuilder <Project15Context>() .UseInMemoryDatabase("db_eventcustomer_test_getall").Options; using (var db = new Project15Context(options)); using (var db = new Project15Context(options)) { var customerRepo = new CustomerRepository(db); var eventRepo = new EventRepository(db); var repo = new EventCustomerRepository(db); //Create customer Customer customer = new Customer { Name = "Axel", Address1 = "111 Address" }; customer = await customerRepo.CreateAsync(customer); await customerRepo.SaveChangesAsync(); Event Event = new Event { Name = "Jazz Fest", Type = "Music", Cost = 40 }; Event = await eventRepo.CreateAsync(Event); await eventRepo.SaveChangesAsync(); for (int i = 0; i < 5; i++) { EventCustomer eventCustomer = new EventCustomer { CustomerId = customer.Id, EventId = Event.Id, }; eventCustomerSaved = await repo.CreateAsync(eventCustomer); await repo.SaveChangesAsync(); eventCustomersList.Add(eventCustomerSaved); } EventSaved = Event; customerSaved = customer; } using (var db = new Project15Context(options)) { var repo = new EventCustomerRepository(db); List <EventCustomer> list = (List <EventCustomer>) await repo.GetAllAsync(); Assert.Equal(eventCustomersList.Count, list.Count); for (int i = 0; i < 5; i++) { Assert.Equal(eventCustomersList[i].CustomerId, list[i].CustomerId); Assert.Equal(eventCustomersList[i].EventId, list[i].EventId); Assert.NotEqual(0, list[i].Id); } } }
private string GetCurrentStatus(Customer customer, IEnumerable <DirectMail> directMails, EventCustomer eventCustomer, EventVolumeModel eventModel, EventVolumeModel lastScreeningEvent, ProspectCustomer prospectCustomer, DateTime fromDate, DateTime toDate, CustomerEligibility customerEligibility) { if (eventCustomer != null && eventCustomer.NoShow) { return(CurrentStatus.NoShow); } if (eventModel != null && eventModel.EventDate.Date >= DateTime.Today && (eventCustomer != null && eventCustomer.AppointmentId.HasValue)) { return(CurrentStatus.ScheduledFutureAppointment); } //if (eventModel != null && eventModel.EventDate.Date == DateTime.Today && (eventCustomer != null && eventCustomer.AppointmentId.HasValue)) //{ // return CompletionStatus.ScheduledForToday; //} if (lastScreeningEvent != null) { return(CurrentStatus.ScheduledTestingComplete); } if (eventCustomer != null && !eventCustomer.AppointmentId.HasValue) { return(CurrentStatus.ScheduledCancelled); } if (customer.IsIncorrectPhoneNumber) { return(CurrentStatus.InvalidData); } if (CheckCustomerUnableToSchedule(prospectCustomer, fromDate, toDate, customerEligibility)) { return(CurrentStatus.UnableToSchedule); } if (CheckCustomerRefusal(prospectCustomer, fromDate, toDate) || IsCustomerMarkedDonotContact(customer, fromDate, toDate)) { return(CurrentStatus.Refusal); } if (directMails != null && directMails.Count() > 4) { var customerDirectMail = directMails.OrderByDescending(dm => dm.MailDate).FirstOrDefault(); if (customerDirectMail.MailDate.AddDays(28) < DateTime.Today) { return(CurrentStatus.Exhausted); } } return(CurrentStatus.InProgress); }
public override async Task UpdateWorksAsync() { int id = 0; int wrongId = 10; EventCustomer eventCustomerSaved = null; Event EventSaved = null; Customer customerSaved = null; // arrange (use the context directly - we assume that works) var options = new DbContextOptionsBuilder <Project15Context>() .UseInMemoryDatabase("db_eventcustomer_test_updatebyid").Options; // act (for act, only use the repo, to test it) using (var db = new Project15Context(options)); using (var db = new Project15Context(options)) { var customerRepo = new CustomerRepository(db); var eventRepo = new EventRepository(db); var repo = new EventCustomerRepository(db); Customer customer = new Customer { Name = "Axel", Address1 = "111 Address" }; customer = await customerRepo.CreateAsync(customer); await customerRepo.SaveChangesAsync(); Event Event = new Event { Name = "Jazz Fest", Type = "Music", Cost = 40 }; Event = await eventRepo.CreateAsync(Event); await eventRepo.SaveChangesAsync(); EventCustomer eventCustomer = new EventCustomer { CustomerId = customer.Id, EventId = Event.Id, Paid = true }; eventCustomerSaved = await repo.CreateAsync(eventCustomer); await repo.SaveChangesAsync(); EventSaved = Event; customerSaved = customer; id = eventCustomerSaved.Id; } using (var db = new Project15Context(options)) { var repo = new EventCustomerRepository(db); EventCustomer eventCustomer = await repo.GetByIdAsync(id); Assert.NotEqual(0, eventCustomer.Id); // should get some generated ID Assert.Equal(eventCustomerSaved.Id, eventCustomer.Id); Assert.Equal(EventSaved.Id, eventCustomer.EventId); eventCustomer.Paid = false; await repo.UpdateAsync(eventCustomer, id); await repo.SaveChangesAsync(); eventCustomer = await repo.GetByIdAsync(eventCustomer.Id); Assert.NotEqual(wrongId, eventCustomer.Id); // should get some generated ID Assert.False(eventCustomer.Paid); } }
public OrderDetail CreateNewOrderDetail(IOrderable orderable, int quantity, long forOrganizationRoleUserId, long dataRecorderCreatorId, SourceCode sourceCode, EventCustomer eventCustomer, ShippingDetail shippingDetail, long?sourceId = null) { if (orderable == null) { throw new ArgumentNullException("orderable"); } if (orderable.Id == 0) { throw new InvalidOperationException("itemToOrder must already exist in the database."); } if (quantity < 1) { throw new ArgumentOutOfRangeException("quantity", "The quantity must be at least 1."); } DataRecorderMetaData dataRecorderMetaData = _dataRecorderMetaDataFactory. CreateDataRecorderMetaData(dataRecorderCreatorId); OrderItemStatus orderItemStatus = _orderItemStatusFactory.CreateOrderItemStatus(orderable. OrderItemType, (int)OrderStatusState.Initial); decimal price = orderable.Price; // TODO: Test source code logic. SourceCodeOrderDetail sourceCodeOrderDetail = null; if (sourceCode != null) { sourceCodeOrderDetail = new SourceCodeOrderDetail { Amount = sourceCode.CouponValue, SourceCodeId = sourceCode.Id, IsActive = true, OrganizationRoleUserCreatorId = dataRecorderMetaData.DataRecorderCreator.Id }; } EventCustomerOrderDetail eventCustomerOrderDetail = null; if (eventCustomer != null) { eventCustomerOrderDetail = new EventCustomerOrderDetail { EventCustomerId = eventCustomer.Id, IsActive = true }; } ShippingDetailOrderDetail shippingDetailOrderDetail = null; if (shippingDetail != null) { shippingDetailOrderDetail = new ShippingDetailOrderDetail { ShippingDetailId = shippingDetail.Id, IsActive = true }; } return(new OrderDetail { Description = orderable.Description, Price = price, Quantity = quantity, DetailType = orderable.OrderItemType, DataRecorderMetaData = dataRecorderMetaData, ForOrganizationRoleUserId = forOrganizationRoleUserId, OrderItemStatus = orderItemStatus, SourceCodeOrderDetail = sourceCodeOrderDetail, EventCustomerOrderDetail = eventCustomerOrderDetail, ShippingDetailOrderDetails = new List <ShippingDetailOrderDetail> { shippingDetailOrderDetail }, SourceId = sourceId }); }
public override async Task DeleteWorksAsync() { int id = 0; Customer customerSaved = null; Event EventSaved = null; EventCustomer eventCustomerSaved = null; // arrange (use the context directly - we assume that works) var options = new DbContextOptionsBuilder <Project15Context>() .UseInMemoryDatabase("db_eventcustomer_test_delete_2").Options; using (var db = new Project15Context(options)); // act (for act, only use the repo, to test it) using (var db = new Project15Context(options)) { var customerRepo = new CustomerRepository(db); var eventRepo = new EventRepository(db); var repo = new EventCustomerRepository(db); //Create customer Customer customer = new Customer { Name = "Axel", Address1 = "111 Address" }; customer = await customerRepo.CreateAsync(customer); await customerRepo.SaveChangesAsync(); Event Event = new Event { Name = "Jazz Fest", Type = "Music", Cost = 40 }; Event = await eventRepo.CreateAsync(Event); await eventRepo.SaveChangesAsync(); EventCustomer eventCustomer = new EventCustomer { CustomerId = customer.Id, EventId = Event.Id, Paid = true }; eventCustomerSaved = await repo.CreateAsync(eventCustomer); await repo.SaveChangesAsync(); EventSaved = Event; customerSaved = customer; id = eventCustomerSaved.Id; } // assert (for assert, once again use the context directly for verify.) using (var db = new Project15Context(options)) { var repo = new EventCustomerRepository(db); EventCustomer eventCustomer = await repo.GetByIdAsync(id); Assert.NotEqual(0, eventCustomer.Id); Assert.Equal(eventCustomerSaved.Id, eventCustomer.Id); Assert.True(eventCustomer.Paid); await repo.DeleteAsync(id); await repo.SaveChangesAsync(); eventCustomer = await repo.GetByIdAsync(id); Assert.Null(eventCustomer); } }
public EventCustomerSummaryModel Create(EventCustomer eventCustomer, Order order, EventBasicInfoViewModel eventInfo, Customer customer, DateTime?apptTime, IEnumerable <OrderedPair <long, string> > orderPackageNamePair, IEnumerable <OrderedPair <long, string> > orderTestNamePair, IEnumerable <OrderedPair <long, string> > orderitemProductPair, IEnumerable <ShippingDetail> shippingDetails, IEnumerable <SourceCode> sourceCodes, IEnumerable <ChargeCard> cards) { string package = ""; if (orderPackageNamePair != null && orderPackageNamePair.Count() > 0) { package = orderPackageNamePair.FirstOrDefault().SecondValue; } if (orderTestNamePair != null && orderTestNamePair.Count() > 0) { var tests = string.Join(",", orderTestNamePair.Select(ot => ot.SecondValue)); package = !string.IsNullOrEmpty(package) ? package + ", " + tests : tests; } var getCardDetailstoDisplay = new Func <long, string>(cardId => { return(cards.Where(c => c.Id == cardId).Select( c => c.TypeId.ToString() + " " + c.Number.Substring(c.Number.Length - 4, 4)).FirstOrDefault()); }); var payments = order.PaymentsApplied != null ? order.PaymentsApplied.Select( pa => new OrderedPair <string, decimal>(pa.PaymentType == PaymentType.CreditCard ? getCardDetailstoDisplay(((ChargeCardPayment)pa).ChargeCardId) : pa.PaymentType.ToString(), pa.Amount)) : null; var sourceCodeOrderDetail = order.OrderDetails.Where( od => od.SourceCodeOrderDetail != null && od.OrderItemStatus.OrderStatusState == OrderStatusState.FinalSuccess).Select(od => od.SourceCodeOrderDetail).FirstOrDefault(); var sourceCode = sourceCodes != null && sourceCodes.Count() > 0 ? sourceCodes.FirstOrDefault() : null; return(new EventCustomerSummaryModel() { AdditionalProduct = orderitemProductPair != null ? String.Join(", ", orderitemProductPair.Select(oip => oip.SecondValue)) : "", Address = eventInfo.HostAddress, AmountDue = order.DiscountedTotal - order.TotalAmountPaid, AmountPaid = order.TotalAmountPaid, Cost = order.UndiscountedTotal, AppointmentTime = apptTime, CustomerId = eventCustomer.CustomerId, CustomerName = customer.NameAsString, HomePhoneNumber = customer.HomePhoneNumber != null?customer.HomePhoneNumber.ToString() : "", OfficePhoneNumber = customer.OfficePhoneNumber != null?customer.OfficePhoneNumber.ToString() : "", CellPhoneNumber = customer.MobilePhoneNumber != null?customer.MobilePhoneNumber.ToString() : "", Email = customer.Email != null?customer.Email.ToString() : "", EventCustomerId = eventCustomer.Id, EventDate = eventInfo.EventDate, EventId = eventCustomer.EventId, Host = eventInfo.HostName, OrderId = order.Id, Package = package, Payments = payments, ShippingOptions = shippingDetails != null ? shippingDetails.Select( sd => new OrderedPair <string, decimal>(sd.ShippingOption.Name, sd.ActualPrice)) : null, SourceCode = sourceCode != null ? sourceCode.CouponCode : "", SourceCodeAmount = sourceCodeOrderDetail != null ? sourceCodeOrderDetail.Amount : 0, EventStatus = eventInfo.Status }); }