示例#1
0
 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);
     }
 }
示例#3
0
 public static Stockist WithTlmStockistCode(this Stockist model)
 {
     return(new()
     {
         StockistId = model.StockistId,
         StockistCode = "TLM",
         Details = model.Details,
         Commission = model.Commission,
         StatusCode = model.StatusCode,
     });
 }
示例#4
0
 public static Stockist WithoutCommission(this Stockist model)
 {
     return(new()
     {
         StockistId = model.StockistId,
         StockistCode = model.StockistCode,
         Details = model.Details,
         Commission = null,
         StatusCode = model.StatusCode,
     });
 }
示例#5
0
 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,
     });
 }
示例#6
0
            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,
                    });
                }
            }
示例#7
0
        /// <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;
            }
        }
示例#8
0
        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);
            }
        }
示例#9
0
 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));
 }