public static Stockist WithStatus(this Stockist model, StatusMode statusMode) { return(new() { StockistId = model.StockistId, StockistCode = model.StockistCode, Details = model.Details, Commission = model.Commission, StatusCode = statusMode, }); }
public string CreateStockistRecord(Stockist newStockists) { try { return(_stockistProvider.CreateStockistDocument(newStockists)); } catch (Exception ex) { return(ex.Message); } }
public static Stockist WithTlmStockistCode(this Stockist model) { return(new() { StockistId = model.StockistId, StockistCode = "TLM", Details = model.Details, Commission = model.Commission, StatusCode = model.StatusCode, }); }
public static Stockist WithoutCommission(this Stockist model) { return(new() { StockistId = model.StockistId, StockistCode = model.StockistCode, Details = model.Details, Commission = null, StatusCode = model.StatusCode, }); }
public static Stockist WithTenPercentCommission(this Stockist model) { return(new() { StockistId = model.StockistId, StockistCode = "TLM", Details = model.Details, Commission = new Commission { StartDate = model.Commission.StartDate, EndDate = model.Commission.EndDate, Rate = 10, }, StatusCode = model.StatusCode, }); }
RecordOfSales ToRecordOfSales(Stockist stockist, IEnumerable <Subtransaction> subtransactions) { var stockistsSubtransactions = subtransactions.Where(x => x.Product.ProductCode.StartsWith(stockist.StockistCode)).ToList(); var rate = decimal.Divide(stockist.Commission.Rate, 100); if (stockistsSubtransactions.Count == 0) { return(new RecordOfSales { StockistCode = stockist.StockistCode, FirstName = stockist.Details.FirstName, Name = stockist.Details.DisplayName, EmailAddress = stockist.Details.EmailAddress, CustomMessage = string.Empty, StartDate = start, EndDate = end, Rate = rate, Sales = new List <Sale>().AsReadOnly(), Subtotal = 0, CommissionTotal = 0, Total = 0, }); } else { var sales = stockistsSubtransactions.Select(x => SaleMapper.FromTransaction(x, rate)).ToList(); var subtotal = sales.Sum(x => x.Subtotal); var commission = sales.Sum(x => x.Commission); return(new RecordOfSales { StockistCode = stockist.StockistCode, FirstName = stockist.Details.FirstName, Name = stockist.Details.DisplayName, EmailAddress = stockist.Details.EmailAddress, CustomMessage = string.Empty, StartDate = start, EndDate = end, Rate = rate, Sales = sales, Subtotal = subtotal, CommissionTotal = commission, Total = subtotal + commission, }); } }
/// <inheritdoc/> public async Task SaveStockistAsync(Stockist stockist) { this.logger.LogInformation("Saving stockist: {@Stockist}", stockist); try { // TODO: Transactionality is broken here, there should be one transaction shared across both Stockist and Commission repositories. stockist = await this.stockistRepository.SaveStockistAsync(stockist); await this.commissionRepository.SaveCommissionAsync(stockist.StockistId, stockist.Commission); this.logger.LogInformation("Successfully saved stockist {StockistCode}", stockist.StockistCode); } catch (Exception ex) { this.logger.LogError(ex, "Failed to save the stockist {@Stockist}.", stockist); throw; } }
public string CreateStockistDocument(Stockist newStockist) { StockistDTO newStockistDTO = new StockistDTO { Stockist_Name = newStockist.Stockist_Name, Stockist_Postcode = newStockist.Stockist_Postcode, Stockist_Contact_Number = newStockist.Stockist_Contact_Number, Stockist_Archived = "0" }; try { return(_stockistRepository.CreateStockistDocument(newStockistDTO)); } catch (Exception ex) { return(ex.Message); } }
private async Task PopulateCommissionAsync(Stockist stockist) { // TODO: Should most likely not bother populating this unless explicitly requested. stockist.Commission = await this.commissionRepository.GetCommissionByStockist(stockist.StockistId); }
public static void MatchStockist(this ObjectAssertions assertions, Stockist expected) { assertions.BeEquivalentTo(expected, o => o.IgnoringCyclicReferences()); }
public static void MatchStockistIgnoringIds(this ObjectAssertions assertions, Stockist expected) { assertions.BeEquivalentTo(expected, o => o.IgnoringCyclicReferences() .Excluding(x => x.StockistId) .Excluding(x => x.Details.StockistId) .Excluding(x => x.Commission.StockistId) .Excluding(x => x.Commission.CommissionId) .Excluding(x => x.Commission.InsertedAt)); }