/// <summary> /// count == 5 /// 20% /// </summary> CalculateUnit <T> Sale5(CalculateUnit <T> unit) { var count = 5; var discount = 0.2m; return(SaleCountProcess(unit, count, discount)); }
/// <summary> /// count == 3 /// 5% /// </summary> CalculateUnit <T> Sale3(CalculateUnit <T> unit) { var count = 3; var discount = 0.05m; return(SaleCountProcess(unit, count, discount)); }
/// <summary> /// D && E /// 5% /// </summary> CalculateUnit <T> SaleDE(CalculateUnit <T> unit) { var ids = new List <T> { _repository.ElementAt(Alphabet.D), _repository.ElementAt(Alphabet.E) }; var discount = 0.05m; return(SaleGroupProcess(unit, ids, discount)); }
/// <summary> /// A && [K || L || M] /// 5% /// </summary> CalculateUnit <T> SaleAKLM(CalculateUnit <T> unit) { var discount = 0.05m; var ids = new List <T> { _repository.ElementAt(Alphabet.A), _repository.ElementAt(Alphabet.K) }; var result = SaleGroupProcess(unit, ids, discount); ids = new List <T> { _repository.ElementAt(Alphabet.A), _repository.ElementAt(Alphabet.L) }; result = SaleGroupProcess(result, ids, discount); ids = new List <T> { _repository.ElementAt(Alphabet.A), _repository.ElementAt(Alphabet.M) }; return(SaleGroupProcess(result, ids, discount)); }
/// <summary> /// count == 5 || 4 || 3 /// except A, C /// </summary> CalculateUnit <T> SaleByCount(CalculateUnit <T> unit) { var exceptNames = new List <T> { _repository.ElementAt(Alphabet.A), _repository.ElementAt(Alphabet.C) }; var exceptProducts = unit.NotCalculatedProducts.Where(x => exceptNames.Contains(x.Id)); var filteredUnit = new CalculateUnit <T> { Cost = unit.Cost, NotCalculatedProducts = unit.NotCalculatedProducts.Where(x => !exceptNames.Contains(x.Id)).ToList() }; var result = Sale5(filteredUnit); result = Sale4(result); result = Sale3(result); result.NotCalculatedProducts.AddRange(exceptProducts); return(result); }
/// <summary> /// count == 5 /// 20% /// </summary> CalculateUnit <T> Sale4A5Z(CalculateUnit <T> unit) { var discount = 0.08m; var ids = new List <T> { //4a _repository.ElementAt(Alphabet.A), _repository.ElementAt(Alphabet.A), _repository.ElementAt(Alphabet.A), _repository.ElementAt(Alphabet.A), //5z _repository.ElementAt(Alphabet.Z), _repository.ElementAt(Alphabet.Z), _repository.ElementAt(Alphabet.Z), _repository.ElementAt(Alphabet.Z), _repository.ElementAt(Alphabet.Z), }; return(SaleGroupProcess(unit, ids, discount)); }