private void SaveProductShipping(OrderDetail productDetail, OrderDetail activeOrderDetail, bool isExclusivelyRequested) { if (productDetail == null || activeOrderDetail == null) { return; } var shippingOption = _shippingOptionRepository.GetShippingOptionByProductId(productDetail.OrderItem.ItemId); if (shippingOption != null) { var resultShippingDetails = _shippingDetailRepository.GetShippingDetailsForCancellation(activeOrderDetail.Id); var cdShippingDetails = _shippingDetailRepository.GetProductShippingDetailsForCancellation(activeOrderDetail.Id); if (!resultShippingDetails.IsNullOrEmpty() && (cdShippingDetails == null || (cdShippingDetails.Count() < resultShippingDetails.Count()))) { var address = _addressRepository.GetAddress(resultShippingDetails.First().ShippingAddress.Id); address.Id = 0; var productShippingDetail = new ShippingDetail { ShippingAddress = address, Status = ShipmentStatus.Processing, ActualPrice = shippingOption.Price, ShippingOption = new ShippingOption { Id = shippingOption.Id }, IsExclusivelyRequested = isExclusivelyRequested, DataRecorderMetaData = new DataRecorderMetaData { DataRecorderCreator = _organizationRoleUserRepository.GetOrganizationRoleUser(_sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId), DateCreated = DateTime.Now, DateModified = DateTime.Now } }; IShippingController shippingController = new ShippingController(); productShippingDetail = shippingController.OrderShipping(productShippingDetail); IRepository <ShippingDetailOrderDetail> shippingDetailOrderDetailRepository = new ShippingDetailOrderDetailRepository(); var shippingDetailOrderDetail = new ShippingDetailOrderDetail { Amount = productShippingDetail.ActualPrice, IsActive = true, OrderDetailId = activeOrderDetail.Id, ShippingDetailId = productShippingDetail.Id }; shippingDetailOrderDetailRepository.Save(shippingDetailOrderDetail); } } }
public void PollforResultNotification() { _logger.Info("Starting the Polling Agent for Result Notification."); var eventCustomerResults = _eventCustomerResultRepository.GetEventCustomerResultsForResultReadyNotification((int)TestResultStateNumber.PostAudit, (int)NewTestResultStateNumber.PdfGenerated, false); if (eventCustomerResults != null && eventCustomerResults.Any()) { _logger.Info("Get the event customer result list."); eventCustomerResults = eventCustomerResults.Where(ec => ec.DataRecorderMetaData != null && ec.DataRecorderMetaData.DateModified != null && ec.DataRecorderMetaData.DateModified.Value < DateTime.Now.AddMinutes(-1 * _buffer)).ToArray(); bool sendNotification = Convert.ToBoolean(_configurationSettingRepository.GetConfigurationValue(ConfigurationSettingName.EnableResultDeliveryNotification)); foreach (var eventCustomerResult in eventCustomerResults) { try { //Check, if is unpaid. if yes, continue var isPaperCopyPurchased = false; var order = _orderRepository.GetOrderByEventCustomerId(eventCustomerResult.Id); if (order != null) { var orderDetail = order.OrderDetails.SingleOrDefault(od => (od.DetailType == OrderItemType.EventPackageItem || od.DetailType == OrderItemType.EventTestItem) && od.EventCustomerOrderDetail != null && od.EventCustomerOrderDetail.IsActive && od.IsCompleted); if (orderDetail != null) { var resultShippingDetails = _shippingDetailRepository.GetShippingDetailsForCancellation(orderDetail.Id); isPaperCopyPurchased = resultShippingDetails != null && resultShippingDetails.Count() > 0 ? true : false; //resultShippingDetails = resultShippingDetails.Where(sd => sd.Status == ShipmentStatus.Processing).Select(sd => sd).ToArray(); } if (order.DiscountedTotal > order.TotalAmountPaid) { _logger.Info("\n Customer [Id: " + eventCustomerResult.CustomerId + "] has not paid for event [Id:" + eventCustomerResult.EventId + "]"); continue; } } _logger.Info(string.Format("\n Customer Id [{0}] & Event Id [{1}] being taken to delivery state. ----------------------------", eventCustomerResult.CustomerId, eventCustomerResult.EventId)); var eventData = _eventRepository.GetById(eventCustomerResult.EventId); var isNewResultFlow = eventData.EventDate >= _settings.ResultFlowChangeDate; //if (isNewResultFlow) //{ // if (!eventCustomerResult.AcesApprovedOn.HasValue || eventCustomerResult.AcesApprovedOn.Value > DateTime.Now.Date) // continue; //} var customerEventScreeningTestIds = _testResultRepository.GetCustomerEventScreeningTestIds(eventCustomerResult.EventId, eventCustomerResult.CustomerId); var customerTests = _eventCustomerResultRepository.GetCustomerTests(eventCustomerResult.Id); using (var scope = new TransactionScope()) { if (isNewResultFlow) { _testResultRepository.SetResultstoState((int)NewTestResultStateNumber.ResultDelivered, false, eventCustomerResult.DataRecorderMetaData.DataRecorderModifier.Id, customerEventScreeningTestIds); } else { _testResultRepository.UpdateStateforCustomerNotification(eventCustomerResult.Id); } _eventCustomerResultRepository.SetEventCustomerResultState(eventCustomerResult.Id, customerTests); var account = _corporateAccountRepository.GetbyEventId(eventCustomerResult.EventId); if (account == null || (account.SendResultReadyMail && account.ResultReadyMailTemplateId > 0)) { if (sendNotification && eventData.NotifyResultReady) { string emailTemplateAlias = EmailTemplateAlias.ResultsReady; if (account != null && account.ResultReadyMailTemplateId > 0) { var emailTemplate = ((IUniqueItemRepository <EmailTemplate>)_emailTemplateRepository).GetById(account.ResultReadyMailTemplateId); emailTemplateAlias = emailTemplate.Alias; } var customer = _customerRepository.GetCustomer(eventCustomerResult.CustomerId); _logger.Info("\n Sending Notification at " + (customer.Email != null ? customer.Email.ToString() : "")); if (emailTemplateAlias == EmailTemplateAlias.ResultsReady) { var resultReadyViewModel = _emailNotificationModelsFactory.GetResultReadyModel(customer.Name.FullName, customer.UserLogin.UserName, isPaperCopyPurchased, eventCustomerResult.EventId); _notifier.NotifySubscribersViaEmail(NotificationTypeAlias.ResultsReady, emailTemplateAlias, resultReadyViewModel, customer.Id, customer.CustomerId, "Result Notification"); } else { var primaryCarePhysician = _primaryCarePhysicianRepository.Get(customer.CustomerId); if (primaryCarePhysician == null) { _logger.Error(string.Format("No primary Care Physician found for Customer Id: {0} \n", customer.CustomerId)); continue; } var resultReadyViewModel = _emailNotificationModelsFactory.GetPpCustomerResultNotificationModel(customer, primaryCarePhysician); _notifier.NotifySubscribersViaEmail(NotificationTypeAlias.ResultsReady, emailTemplateAlias, resultReadyViewModel, customer.Id, customer.CustomerId, "Result Notification"); } // Commented when implemented one way password hashing //if (customer.UserLogin != null && !customer.UserLogin.UserVerified && (account == null || account.SendWelcomeEmail)) //{ // var passwordNotificationModel = _emailNotificationModelsFactory.GetWelcomeWithPasswordNotificationModel(customer.Name.ToString(), customer.UserLogin.Password); // _notifier.NotifySubscribersViaEmail(NotificationTypeAlias.CustomerWelcomeEmailWithPassword, EmailTemplateAlias.CustomerWelcomeEmailWithPassword, passwordNotificationModel, customer.Id, customer.CustomerId, "Result Notification"); //} } } scope.Complete(); } } catch (Exception ex) { _logger.Info( String.Format("\n System failure: For EventId:{0} and CustomerId:{1} \n Message{2}", eventCustomerResult.EventId, eventCustomerResult.CustomerId, ex.Message)); } } } else { _logger.Info("No event customer result found."); } }
protected void SaveButton_Click(object sender, EventArgs e) { if (BillingAddressSameRadio.Checked) { ListItem itemAlreadySelectedState = StateDropDown.Items.FindByValue(StateIdHidden.Value); if (itemAlreadySelectedState != null) { itemAlreadySelectedState.Selected = true; } CityText.Text = CityHidden.Value; ZipText.Text = ZipHidden.Value; Address1Text.Text = Address1Hidden.Value; } bool isStatusUpdated = false; TotalAmountPayable = 0.0m; var selectedRows = GetSelectedRows(); try { using (var transaction = new TransactionScope()) { if (PaymentMode.SelectedValue != PaymentType.CreditCard.PersistenceLayerId.ToString() || AddressValidation()) { foreach (var row in selectedRows) { if (row == null) { continue; } var orderDetailIdLiteral = row.FindControl("OrderDetailIdLiteral") as Literal; var shippingDetailIdLiteral = row.FindControl("ShippingDetailIdLiteral") as Literal; var actualPrice = row.FindControl("PriceLabel") as Label; if (orderDetailIdLiteral != null && shippingDetailIdLiteral != null) { var orderDetailId = Convert.ToInt64(orderDetailIdLiteral.Text); var shippingDetailId = Convert.ToInt64(shippingDetailIdLiteral.Text); isStatusUpdated = _shippingDetailOrderDetailRepository.UpdateStatus(shippingDetailId, orderDetailId, false); var shippingDetail = _shippingDetailRepository.GetById(shippingDetailId); shippingDetail.Status = ShipmentStatus.Cancelled; _shippingDetailRepository.Save(shippingDetail); var resultShippingDetails = _shippingDetailRepository.GetShippingDetailsForCancellation(orderDetailId).ToList(); var productShippingDetails = _shippingDetailRepository.GetProductShippingDetailsForCancellation(orderDetailId).ToList(); if (productShippingDetails.Count > resultShippingDetails.Count) { var productShippingDetail = productShippingDetails.FirstOrDefault(); if (productShippingDetail != null) { _shippingDetailOrderDetailRepository.UpdateStatus(productShippingDetail.Id, orderDetailId, false); productShippingDetail.Status = ShipmentStatus.Cancelled; _shippingDetailRepository.Save(productShippingDetail); CheckEventCustomerResultStateAndDeleteCdGenTrackRecord(); } } if (actualPrice != null && !string.IsNullOrEmpty(actualPrice.Text)) { TotalAmountPayable += Convert.ToDecimal(actualPrice.Text); } } } if (AmountPaid < (DiscountedTotal - TotalAmountPayable)) { TotalAmountPayable = 0; } else { TotalAmountPayable = AmountPaid - (DiscountedTotal - TotalAmountPayable); } var isRefundQueueEnabled = IoC.Resolve <ISettings>().IsRefundQueueEnabled; if (PaymentMode.SelectedValue == PaymentType.CreditCard.PersistenceLayerId.ToString() && BillingAddressDifferentRadio.Checked && !isRefundQueueEnabled) { var creatorOrganizationRoleUser = GetCreatorOrganizationRoleUser(); UpdateCustomerBillingAddress(creatorOrganizationRoleUser.Id); } if (isStatusUpdated) { if (TotalAmountPayable > 0) { if (isRefundQueueEnabled) { var refundRequest = PrepareRefundRequestObject(); var refundRequestValidator = IoC.Resolve <RefundRequestEditModelValidator>(); var result = refundRequestValidator.Validate(refundRequest); if (result.IsValid) { IoC.Resolve <IRefundRequestService>().SaveRequest(refundRequest); } else { var propertyNames = result.Errors.Select(er => er.PropertyName).Distinct(); var htmlString = propertyNames.Aggregate("", (current, property) => current + (result.Errors.Where(er => er.PropertyName == property).FirstOrDefault().ErrorMessage + " ")); MessageBox.ShowErrorMessage(htmlString); return; } } else { var creatorOrganizationRoleUser = GetCreatorOrganizationRoleUser(); var paymentInstrument = RefundPayment(creatorOrganizationRoleUser, OrderId + "_" + CustomerId); if (paymentInstrument != null && ApplyPaymentToOrder(creatorOrganizationRoleUser, CurrentOrder, paymentInstrument)) { transaction.Complete(); Response.RedirectUser(ReturnUrl); } else { SetAndDisplayErrorMessage("Oops some error occured in the system please try again later."); } } } transaction.Complete(); if (UrlValidator.IsUrlLocalToHost(Request, ReturnUrl)) { Response.RedirectUser(ReturnUrl); } } else { SetAndDisplayErrorMessage("Oops some error occured in the system please try again later."); } } } } catch (InvalidOperationException) { } catch { SetAndDisplayErrorMessage("Oops some error occured in the system please try again later."); } }