public void Calculate_quantity_and_junk_cost() { var offerId = new OfferId(1, 1); var list = new List <Tuple <IEnumerable <ClientRating>, IEnumerable <Offer> > > { Tuple.Create <IEnumerable <ClientRating>, IEnumerable <Offer> >( new List <ClientRating> { new ClientRating(2, 1, 0.5m), }, new List <Offer> { new Offer(offerId, 1, 1, 100000, false, 10) }), Tuple.Create <IEnumerable <ClientRating>, IEnumerable <Offer> >( new List <ClientRating> { new ClientRating(3, 1, 0.7m) }, new List <Offer> { new Offer(offerId, 1, 1, 800, true, 10, 1) }) }; var averageCosts = _calculator.Calculate(list); Assert.That(averageCosts.Count, Is.EqualTo(1)); var costs = (Hashtable)averageCosts[offerId]; Assert.That(costs.Count, Is.EqualTo(1)); var aggregates = ((OfferAggregates)costs[new AggregateId(1, 1)]); Assert.That(aggregates.Quantity, Is.EqualTo(10)); Assert.That(aggregates.Cost, Is.EqualTo(100000)); }
protected NameValueCollection GetPostData() { var data = new NameValueCollection(); data[Parameters.GlobalPostbackType] = GlobalPostbackType.ToString(); data[Parameters.OfferId] = OfferId.ToString(); data[Parameters.OfferName] = OfferName; data[Parameters.IpAddress] = Ip; data[Parameters.CountryCode] = CountryCode; data[Parameters.SubId] = SubId; data[Parameters.Payout] = Payout.ToClearString(); data[Parameters.CurrencyCode] = CurrencyCode; if (Age != -1) { data[Parameters.Age] = Age.ToString(); } data[Parameters.Gender] = Gender.ToString(); if (!string.IsNullOrEmpty(SubId2)) { data[Parameters.SubId2] = SubId2; } if (!string.IsNullOrEmpty(SubId3)) { data[Parameters.SubId3] = SubId3; } return(data); }
public BookedEvent(BookedRecordId bookedRecordId, CustomerId customerId, FacilityId facilityId, OfferId offerId) { BookedRecordId = bookedRecordId; CustomerId = customerId; FacilityId = facilityId; OfferId = offerId; }
public void CalculateWithNoFullRating() { var offerId = new OfferId(1, 1); var list = new List <Tuple <IEnumerable <ClientRating>, IEnumerable <Offer> > > { Tuple.Create <IEnumerable <ClientRating>, IEnumerable <Offer> >( new List <ClientRating> { new ClientRating(2, 1, 0.2m), }, new List <Offer> { new Offer(offerId, 1, 1, 100, false, 10), new Offer(offerId, 2, 1, 50, false, 10, 1), }), Tuple.Create <IEnumerable <ClientRating>, IEnumerable <Offer> >( new List <ClientRating> { new ClientRating(1, 1, 0.6m), }, new List <Offer> { new Offer(offerId, 1, 1, 20, false, 10), new Offer(offerId, 2, 1, 50, false, 10, 1), }) }; var averageCosts = _calculator.Calculate(list); var costs = (Hashtable)averageCosts[offerId]; var aggregates = ((OfferAggregates)costs[new AggregateId(1, 1)]); Assert.That(aggregates.Cost, Is.EqualTo(40)); Assert.That(aggregates.Quantity, Is.EqualTo(10)); aggregates = ((OfferAggregates)costs[new AggregateId(2, 1)]); Assert.That(aggregates.Cost, Is.EqualTo(50)); Assert.That(aggregates.Quantity, Is.EqualTo(10)); }
public override int GetHashCode() { unchecked { return(DevName.GetHashCode() * 397 ^ OfferId.GetHashCode()); } }
public void Ignore_cost_greater_than_threshold() { _calculator.CostThreshold = 90000; var offerId = new OfferId(1, 1); var list = new List <Tuple <IEnumerable <ClientRating>, IEnumerable <Offer> > > { Tuple.Create <IEnumerable <ClientRating>, IEnumerable <Offer> >( new List <ClientRating> { new ClientRating(2, 1, 0.5m), }, new List <Offer> { new Offer(offerId, 1, 1, 100000, false) }), Tuple.Create <IEnumerable <ClientRating>, IEnumerable <Offer> >( new List <ClientRating> { new ClientRating(3, 1, 0.7m) }, new List <Offer> { new Offer(offerId, 1, 1, 800, false) }) }; var averageCosts = _calculator.Calculate(list); Assert.That(averageCosts.Count, Is.EqualTo(1)); var costs = (Hashtable)averageCosts[offerId]; Assert.That(costs.Count, Is.EqualTo(1)); Assert.That(((OfferAggregates)costs[new AggregateId(1, 1)]).Cost, Is.EqualTo(800m)); }
public BookedRecordData(EmployeeId employeeId, OfferId offerId, Money price, DateTime date, short durationInMinutes) { EmployeeId = employeeId; OfferId = offerId; Price = price; Date = date; DurationInMinutes = durationInMinutes; }
public Offer(OfferId id, FacilityId facilityId, string name, decimal price, string currency, short duration) { Id = id; FacilityId = facilityId; Name = name; Price = price; Currency = currency; Duration = duration; }
internal BookedRecord(EmployeeId employeeId, OfferId offerId, Money price, DateTime date, short durationInMinutes) { CheckRule(new DateMustBeFromTheFutureRule(date)); this.Id = new BookedRecordId(Guid.NewGuid()); this.employeeId = employeeId; this.offerId = offerId; this.price = price; this.date = date; this.durationInMinutes = durationInMinutes; this.status = BookedRecordStatus.Booked; }
public DraftId Choose(string offerIdString, string tenantIdString, DateTime from, DateTime to) { var offerId = OfferId.From(offerIdString); var offer = _offerRepository.Get(offerId); var tenantId = TenantId.From(tenantIdString); var period = Period.From(from, to); var discount = _discountService.CalculateDiscount(tenantIdString, offerIdString, from, to); var draftFactory = new DraftFactory(discount, new DefaultDraftNumberGenerator()); var draft = offer.Choose(tenantId, period, draftFactory); _draftRepository.Save(draft); return(draft.Id); }
public async Task InMemoryTestHarness_OfferCreatedPublished_OfferPersisted() { using (var scope = factory.Services.CreateScope()) { var mediator = scope.ServiceProvider.GetRequiredService <IMediator>(); var ctx = scope.ServiceProvider.GetRequiredService <BookingContext>(); var harness = new InMemoryTestHarness(); var consumerHarness = harness.Consumer <OfferCreatedConsumer>(() => new OfferCreatedConsumer(mediator)); var offerId = new OfferId(Guid.NewGuid()); var facilityId = new FacilityId(Guid.NewGuid()); var name = "testowa oferta"; var price = 50; var currency = "PLN"; short duration = 60; await harness.Start(); try { await harness.InputQueueSendEndpoint.Send <OfferCreated>(new { Id = offerId.Value, FacilityId = facilityId.Value, Name = name, Price = price, Currency = currency, Duration = duration }); Assert.True(await harness.Consumed.Any <OfferCreated>()); Assert.True(await consumerHarness.Consumed.Any <OfferCreated>()); Assert.False(await harness.Published.Any <Fault <OfferCreated> >()); var persistedOffer = await ctx.Offers.FirstOrDefaultAsync(o => o.Id == offerId); Assert.NotNull(persistedOffer); Assert.Equal(facilityId, persistedOffer.FacilityId); Assert.Equal(price, persistedOffer.Price); Assert.Equal(currency, persistedOffer.Currency); Assert.Equal(duration, persistedOffer.Duration); } finally { await harness.Stop(); } } }
/// <summary> /// Gets the hash code /// </summary> /// <returns>Hash code</returns> public override int GetHashCode() { unchecked // Overflow is fine, just wrap { var hashCode = 41; // Suitable nullity checks etc, of course :) if (OfferId != null) { hashCode = hashCode * 59 + OfferId.GetHashCode(); } if (ProviderId != null) { hashCode = hashCode * 59 + ProviderId.GetHashCode(); } return(hashCode); } }
public void Customize(IHtmlToPdfOptions options) { options.FooterHeaderReplace.Add("languageId", OffersLanguageHelpers.getCurrentUIlanguageID().ToString()); options.FooterHeaderReplace.Add("languageCode", LanguageId); options.FooterHeaderReplace.Add("offerId", OfferId.ToString()); // you may customize HTML to PDF converter (WKHTML) parameters here, e.g. //options.MarginLeft = "2cm"; //options.MarginRight = "1cm"; //options.MarginTop = "1cm"; //options.MarginBottom = "1cm"; var uriForProtocol = new Uri(options.Url.ToString()).GetLeftPart(UriPartial.Authority); options.CustomArgs.Add("--header-html"); options.CustomArgs.Add(uriForProtocol + "/Offers/Offers/Header"); options.CustomArgs.Add("--footer-html"); options.CustomArgs.Add(uriForProtocol + "/Offers/Offers/Footer"); // options.CustomArgs.Add("--disable-smart-shrinking"); }
private List <BookedRecordData> MappBookedRecords(CreateBookingRequestCommand request, IEnumerable <Offer> offers) { var bookedRecords = new List <BookedRecordData>(); foreach (var record in request.BookedRecords) { var offerId = new OfferId(record.OfferId); var employeeId = new EmployeeId(record.EmployeeId); var offer = offers.First(o => o.Id == offerId); bookedRecords.Add(new BookedRecordData( employeeId, offerId, Money.Of(offer.Price, offer.Currency), record.Date, offer.Duration )); } return(bookedRecords); }
public void CalculateWithSameProductInOtherPrice() { var offerId = new OfferId(1, 1); var list = new List <Tuple <IEnumerable <ClientRating>, IEnumerable <Offer> > > { Tuple.Create <IEnumerable <ClientRating>, IEnumerable <Offer> >( new List <ClientRating> { new ClientRating(2, 1, 1m), }, new List <Offer> { new Offer(offerId, 1, 1, 100, false, 10, 0, "Code"), new Offer(offerId, 1, 1, 50, false, 10, 1, "Code"), new Offer(offerId, 1, 1, 150, false, 10, 2, "Code", priceId: 1) }) }; var averageCosts = _calculator.Calculate(list); var costs = (Hashtable)averageCosts[offerId]; var aggregates = ((OfferAggregates)costs[new AggregateId(1, 1)]); Assert.That(aggregates.Cost, Is.EqualTo(100)); Assert.That(aggregates.Quantity, Is.EqualTo(20)); }
public void CalculateWithSameAssortment() { var offerId = new OfferId(1, 1); var list = new List <Tuple <IEnumerable <ClientRating>, IEnumerable <Offer> > > { Tuple.Create <IEnumerable <ClientRating>, IEnumerable <Offer> >( new List <ClientRating> { new ClientRating(2, 1, 1m), }, new List <Offer> { new Offer(offerId, 1, 1, 100, false, 10), new Offer(offerId, 1, 1, 125, false, 10, 1), new Offer(offerId, 1, 1, 150, false, 1, 2) }) }; var averageCosts = _calculator.Calculate(list); var costs = (Hashtable)averageCosts[offerId]; var aggregates = ((OfferAggregates)costs[new AggregateId(1, 1)]); Assert.That(aggregates.Cost, Is.EqualTo(125)); Assert.That(aggregates.Quantity, Is.EqualTo(21)); }
public void Get_max_quiantity_from_all_prices() { var offerId = new OfferId(1, 1); var offers = new List <Offer>(); var list = new List <Tuple <IEnumerable <ClientRating>, IEnumerable <Offer> > > { Tuple.Create <IEnumerable <ClientRating>, IEnumerable <Offer> >( new List <ClientRating> { new ClientRating(2, 1, 1m), }, offers) }; offers.Add(new Offer(offerId, 1, 1, 100, false, 50, priceId: 1)); offers.Add(new Offer(offerId, 1, 1, 101, false, 200, priceId: 1)); offers.Add(new Offer(offerId, 1, 1, 100, false, 50, priceId: 2)); var averageCosts = _calculator.Calculate(list); var costs = (Hashtable)averageCosts[offerId]; var aggregates = ((OfferAggregates)costs[new AggregateId(1, 1)]); Assert.That(aggregates.Quantity, Is.EqualTo(250)); }
/// <summary> /// Returns true if Offer instances are equal /// </summary> /// <param name="other">Instance of Offer to be compared</param> /// <returns>Boolean</returns> public bool Equals(Offer other) { if (ReferenceEquals(null, other)) { return(false); } if (ReferenceEquals(this, other)) { return(true); } return (( OfferId == other.OfferId || OfferId != null && OfferId.Equals(other.OfferId) ) && ( ProviderId == other.ProviderId || ProviderId != null && ProviderId.Equals(other.ProviderId) )); }
public void SaveWithZeroCost() { var result = new Hashtable(); var offerId = new OfferId(1, 1); var aggregator = new OfferAggregates(1) { Cost = 0, Quantity = 1 }; var costs = new Hashtable(); costs[new AggregateId(0, 0)] = aggregator; aggregator = new OfferAggregates(1) { Cost = 2, Quantity = 1 }; costs[new AggregateId(1, 1)] = aggregator; result[offerId] = costs; var count = calculator.Save(DateTime.Today, result); Assert.That(count, Is.EqualTo(1)); }
public BookedRecord(EmployeeId employeeId, OfferId offerId, DateTime date) { EmployeeId = employeeId; OfferId = offerId; Date = date; }
public override int GetHashCode() { return(OfferId.GetHashCode() + SkillId.GetHashCode()); }
public BookedNotification(CustomerId customerId, FacilityId facilityId, OfferId offerId) : base(null) { CustomerId = customerId; FacilityId = facilityId; OfferId = offerId; }
public AgreementNumber GetNextAvailable(TenantId tenantId, OfferId offerId) { return(AgreementNumber.From($"{offerId}-{tenantId}")); }
public override int GetHashCode() { return(OfferId.GetHashCode() + FieldId.GetHashCode()); }
public Draft Create(OwnerId ownerId, TenantId tenantId, Apartment apartment, Period period, Price pricePerDay, OfferId offerId, Price deposit) { var draftNumber = _draftNumberGenerator.GetNextAvailable(tenantId, offerId); var discountedPrice = Price.From(pricePerDay.ToDecimal() * _discount.ToDecimal()); return(new Draft(ownerId, tenantId, apartment, period, discountedPrice, draftNumber, deposit)); }
public Offer Get(OfferId offerId) { return(Offers.SingleOrDefault(o => o.Id.Equals(offerId))); }