public void Build_Test01() { const string creditNumber = "creditNumber"; const string customerCode = "code"; const string invoiceNumber = "c"; var creditDate = DateTime.UtcNow; const string customerName = "d"; const CreditStatus status = CreditStatus.Parked; Monetary total = 12.23432m; var mockedCreditView = new Mock <ICreditView>(); mockedCreditView.Setup(x => x.CreditNumber).Returns(creditNumber); mockedCreditView.Setup(x => x.CustomerCode).Returns(customerCode); mockedCreditView.Setup(x => x.InvoiceNumber).Returns(invoiceNumber); mockedCreditView.Setup(x => x.CreditDate).Returns(creditDate); mockedCreditView.Setup(x => x.CustomerName).Returns(customerName); mockedCreditView.Setup(x => x.CreditStatus).Returns(status); mockedCreditView.Setup(x => x.Total).Returns(total); var builder = new CreditViewQueryModelBuilder(); var response = builder.Build(mockedCreditView.Object); Assert.That(response.CreditNumber == creditNumber); Assert.That(response.CustomerCode == customerCode); Assert.That(response.InvoiceNumber == invoiceNumber); Assert.That(response.CreditDate == creditDate); Assert.That(response.CustomerName == customerName); Assert.That(response.Status == status); Assert.That(response.Total == total); }
public CreditStatus Apply(Customer customer) { var company = _companyRepository.GetById(customer.Company.Id); var creditStatus = new CreditStatus(); if (company.Name == "VeryImportantClient") { // Skip credit check creditStatus.HasCreditLimit = false; } else if (company.Name == "ImportantClient") { // Do credit check and double credit limit creditStatus.HasCreditLimit = true; var creditLimit = _customerCreditService.GetCreditLimit(customer.Firstname, customer.Surname, customer.DateOfBirth); creditLimit = creditLimit * 2; creditStatus.CreditLimit = creditLimit; } else { // Do credit check creditStatus.HasCreditLimit = true; var creditLimit = _customerCreditService.GetCreditLimit(customer.Firstname, customer.Surname, customer.DateOfBirth); creditStatus.CreditLimit = creditLimit; } if (creditStatus.HasCreditLimit && creditStatus.CreditLimit < _creditLimit) { creditStatus.Failed = true; } return(creditStatus); }
/// <summary> /// Updates the deals in the reference numbers to the credit status specified. /// </summary> /// <param name="referenceNumbers"> /// The list of reference numbers of the deals to update. /// </param> /// <param name="creditStatus"> /// The credit status to which to set the redeemed deals. /// </param> /// <param name="redeemedDealOperations"> /// The object to use to perform redeemed deal operations. /// </param> /// <param name="context"> /// The context of the worker action being executed. /// </param> /// <param name="threadId"> /// The ID of the thread attempting to perform this action. /// </param> /// <exception cref="ArgumentNullException"> /// * Parameter redeemedDealOperations cannot be null. /// -OR- /// * Parameter context cannot be null. /// </exception> public void UpdateDealStatus(Collection <int> referenceNumbers, CreditStatus creditStatus, IRedeemedDealOperations redeemedDealOperations, CommerceContext context, int threadId) { if (redeemedDealOperations == null) { throw new ArgumentNullException("redeemedDealOperations", "Parameter redeemedDealOperations cannot be null."); } if (context == null) { throw new ArgumentNullException("context", "Parameter context cannot be null."); } if (threadId == AuthorizedThreadId) { context.Log.Verbose("Updating specified redeemed deals to credit status {0}.", creditStatus); context[Key.ReferenceNumbers] = referenceNumbers; context[Key.CreditStatus] = creditStatus; redeemedDealOperations.UpdateRedeemedDeals(); //// Add analytics info. //Collection<SettledDealInfo> settledDealInfoList = redeemedDealOperations.RetrieveSettlementAnalyticsInfo(); //foreach (SettledDealInfo settledDealInfo in settledDealInfoList) //{ // Analytics.AddSettlementEvent(settledDealInfo.UserId, settledDealInfo.EventId, settledDealInfo.CorrelationId, // settledDealInfo.ParentDealId, settledDealInfo.Currency, // settledDealInfo.SettlementAmount, settledDealInfo.DiscountAmount, // settledDealInfo.DealId, settledDealInfo.PartnerMerchantId); //} } }
/// <summary> /// Updates the pending redeemed deals in the merchant record list to the credit status specified, if the credit status /// is valid. /// </summary> /// <param name="record"> /// Merchant record whose redeemed deal to update. /// </param> /// <param name="creditStatus"> /// The credit status to which to set the redeemed deals. /// </param> /// <exception cref="InvalidOperationException"> /// Parameter creditStatus contains an invalid CreditStatus for this operation. /// </exception> internal void UpdatePendingRedeemedDeals(OutstandingRedeemedDealInfo record, CreditStatus creditStatus) { // Update the credit status for the specified list of merchant records. WorkerActions.UpdatePendingRedeemedDeals(new Collection <OutstandingRedeemedDealInfo> { record }, creditStatus, RedeemedDealOperations, Context); }
public async Task DeleteCreditAsyncShouldDeletePendingCredit(CreditStatus creditStatus, CreditStatus expected) { var options = new DbContextOptionsBuilder <PhotoparallelDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options; var dbContext = new PhotoparallelDbContext(options); var credit = new CreditContract { CreditStatus = creditStatus }; dbContext.CreditContracts.Add(credit); var order = new Order { OrderStatus = OrderStatus.Pending }; dbContext.Orders.Add(order); credit.Order = order; await dbContext.SaveChangesAsync(); var ordersService = new Mock <IOrdersService>(); var creditsService = new CreditsService(dbContext, ordersService.Object); await creditsService.DeleteCreditAsync(credit.Id); Assert.Equal(expected, credit.CreditStatus); }
/// <summary> /// /// </summary> /// <returns></returns> private ResultCode GetEarnBurnHistory() { List <EarnBurnTransactionItemDataContract> historyItems = new List <EarnBurnTransactionItemDataContract>(); // Retrieve list of redemption history items. Context.Log.Verbose("Retrieving earn/burn redemption history belonging to user {0}", ((User)Context[Key.User]).GlobalId); IEnumerable <RedemptionHistoryItem> items = RedemptionHistoryOperations.RetrieveMicrosoftEarnRedemptionHistory(); Context.Log.Verbose("{0} earn/burn redemption history entries were retrieved from the data store.", items.Count()); double totalEarnedCredits = 0; double totalBurnedCredits = 0; // If any redemption history items were returned, add them to the context. if (items.Any()) { // Build the list of HistoryItemDataContracts from the list of redemption history items. foreach (RedemptionHistoryItem redemptionHistoryItem in items) { double discountAmount = ((double)redemptionHistoryItem.DiscountAmount / 100); CreditStatus creditStatus = redemptionHistoryItem.CreditStatus; historyItems.Add(new EarnBurnTransactionItemDataContract() { RedemptionType = this.GetRedemptionTypeForEarnBurn(redemptionHistoryItem.ReimbursementTender), MerchantName = redemptionHistoryItem.MerchantName, DiscountSummary = redemptionHistoryItem.DiscountSummary, DealPercent = redemptionHistoryItem.DealPercent, EventDateTime = redemptionHistoryItem.EventDateTime, EventAmount = string.Format("{0:C}", ((double)redemptionHistoryItem.EventAmount / 100)), Reversed = redemptionHistoryItem.Reversed, CreditStatus = creditStatus.ToString(), DiscountAmount = string.Format("{0:C}", discountAmount), LastFourDigits = redemptionHistoryItem.LastFourDigits, CardBrand = redemptionHistoryItem.CardBrand.ToString() }); //Consider only the settled earn transactions to calculate total earned credits //For calculating burned credits, include both cleared and pending transaction if (redemptionHistoryItem.ReimbursementTender == ReimbursementTender.MicrosoftEarn && creditStatus == CreditStatus.CreditGranted) { totalEarnedCredits += discountAmount; } else if (redemptionHistoryItem.ReimbursementTender == ReimbursementTender.MicrosoftBurn) { totalBurnedCredits += discountAmount; } } } double availableCredits = (totalEarnedCredits > totalBurnedCredits) ? (totalEarnedCredits - totalBurnedCredits) : 0; GetEarnBurnTransactionHistoryResponse response = (GetEarnBurnTransactionHistoryResponse)Context[Key.Response]; response.RedemptionHistory = historyItems; response.CreditBalance = string.Format("{0:C}", availableCredits); return(ResultCode.Success); }
public static CreditStatusModel ToModel(this CreditStatus aCreditStatusEntity) { return(new CreditStatusModel() { CredStatusId = aCreditStatusEntity.CredStatusId, Code = aCreditStatusEntity.Code, Description = aCreditStatusEntity.Description }); }
private static CreditStatus Map(EditViewModel editViewModel) { var creditStatus = new CreditStatus { CreditStatusId = editViewModel.CreditStatusId, CreditStatusDescription = editViewModel.CreditStatusDescription }; return(creditStatus); }
/// <summary> /// Updates the pending redeemed deals in the merchant record list to the credit status specified, if the credit status /// is valid. /// </summary> /// <param name="records"> /// The list of merchant records whose redeemed deals to update. /// </param> /// <param name="creditStatus"> /// The credit status to which to set the redeemed deals. /// </param> /// <exception cref="InvalidOperationException"> /// Parameter creditStatus contains an invalid CreditStatus for this operation. /// </exception> //TODO: Make internal once Worker role is up and running. public void UpdatePendingRedeemedDeals(Collection <OutstandingRedeemedDealInfo> records, CreditStatus creditStatus) { // Ensure specified credit status is valid for this operation. if (creditStatus != CreditStatus.StatementCreditRequested && creditStatus != CreditStatus.CreditGranted) { throw new InvalidOperationException("Parameter creditStatus contains an invalid CreditStatus for this operation."); } // Update the credit status for the specified list of merchant records. WorkerActions.UpdatePendingRedeemedDeals(records, creditStatus, RedeemedDealOperations, Context); }
/// <summary> /// Updates the redeemed deals to the credit status specified, if the credit status /// is valid. /// </summary> /// <param name="referenceNumbers"> /// The list of reference numbers whose redeemed deals to update. /// </param> /// <param name="creditStatus"> /// The credit status to which to set the redeemed deals. /// </param> /// <exception cref="InvalidOperationException"> /// Parameter creditStatus contains an invalid CreditStatus for this operation. /// </exception> //TODO: We need to move this to someplace else so that PtsBuilder can also use it. internal void UpdateRedeemedDeals(Collection <int> referenceNumbers, CreditStatus creditStatus) { // Ensure specified credit status is valid for this operation. if (creditStatus != CreditStatus.CreditGranted && creditStatus != CreditStatus.RejectedByPartner) { throw new InvalidOperationException("Parameter creditStatus contains an invalid CreditStatus for this operation."); } // Update the credit status for the specified list of merchant records. WorkerActions.Instance.UpdateDealStatus(referenceNumbers, creditStatus, RedeemedDealOperations, Context, ThreadId); }
/// <summary> /// Updates the pending redeemed deals in the merchant record list to the credit status specified. /// </summary> /// <param name="records"> /// The list of merchant records whose redeemed deals to update. /// </param> /// <param name="creditStatus"> /// The credit status to which to set the redeemed deals. /// </param> /// <param name="redeemedDealOperations"> /// The object to use to perform redeemed deal operations. /// </param> /// <param name="context"> /// The context of the worker action being executed. /// </param> /// <exception cref="ArgumentNullException"> /// * Parameter redeemedDealOperations cannot be null. /// -OR- /// * Parameter context cannot be null. /// </exception> public static void UpdatePendingRedeemedDeals(Collection <OutstandingRedeemedDealInfo> records, CreditStatus creditStatus, IRedeemedDealOperations redeemedDealOperations, CommerceContext context) { if (redeemedDealOperations == null) { throw new ArgumentNullException("redeemedDealOperations", "Parameter redeemedDealOperations cannot be null."); } if (context == null) { throw new ArgumentNullException("context", "Parameter context cannot be null."); } context.Log.Verbose("Updating specified redeemed deals to credit status {0}.", creditStatus); context[Key.MerchantRecords] = records; context[Key.CreditStatus] = creditStatus; redeemedDealOperations.UpdatePendingPartnerRedeemedDeals(); }
private void EditCreditStatus(CreditStatus creditStatus) { _creditStatusesRepository.EditCreditStatus(creditStatus); }
private void AddCreditStatus(CreditStatus creditStatus) { _creditStatusesRepository.AddCreditStatus(creditStatus); }
public void EditCreditStatus(CreditStatus creditStatus) { _databaseModel.Entry(creditStatus).State = EntityState.Modified; _databaseModel.SaveChanges(); }
public void AddCreditStatus(CreditStatus creditStatus) { _databaseModel.CreditStatus.Add(creditStatus); _databaseModel.SaveChanges(); }
/// <summary> /// Sets the value of the current credit amount attribute. /// </summary> /// <param name="client">DLMS client.</param> /// <param name="value">Current credit amount</param> /// <returns>Action bytes.</returns> /// <summary> public byte[][] InvokeCredit(GXDLMSClient client, CreditStatus value) { return(client.Method(this, 3, (byte)value, DataType.UInt8)); }