C# Client Library
A C# Client Library for the AnalyzeRe REST API
Loading...
Searching...
No Matches
FeeReference.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Runtime.Serialization;
6using Newtonsoft.Json;
7
8namespace AnalyzeRe.Fees
9{
12 public class FeeReference : APIType, IEquatable<FeeReference>
13 {
14 private const string BASE_PATH = "Layer";
15
17 [DataMember(Order = 1)]
18 [JsonProperty(PropertyName = "ref")]
19 [NotNull]
20 public List<string> _ref { get; set; }
21
22 #region Enumerations
24 public enum PremiumSource {
26 Premium,
29 }
30
32 public enum LossSource
33 {
35 Losses,
38 }
39 #endregion Enumerations
40
42 public FeeReference() { }
43
44 private FeeReference(string path1, string path2, string path3)
45 {
46 _ref = new List<string>() { path1, path2, path3};
47 }
48
49 private FeeReference(string path1, string path2)
50 {
51 _ref = new List<string>() { path1, path2};
52 }
53
54 #region Static Factory Methods
58 public static FeeReference Create(PremiumSource source)
59 {
60 return new FeeReference(BASE_PATH, source.ToString());
61 }
62
66 public static FeeReference Create(LossSource source)
67 {
68 switch (source)
69 {
70 case LossSource.Losses:
71 return new FeeReference(BASE_PATH, "Losses");
72 case LossSource.ReinstatementBrokerage:
73 return new FeeReference(BASE_PATH, "ReinstatementBrokerage");
74 default:
75 throw new ArgumentException($"Invalid {nameof(LossSource)}.");
76 }
77 }
78
82 public static FeeReference Create(Fee source)
83 {
84 return new FeeReference(BASE_PATH, "Fees", source.name);
85 }
86
90 public static FeeReference CreateFromFeeName(string name)
91 {
92 return new FeeReference(BASE_PATH, "Fees", name);
93 }
94
98 public static FeeReference CreateFromPremiumOrLossName(string name)
99 {
100 return new FeeReference(BASE_PATH, name);
101 }
102
104 public static FeeReference Premium => Create(PremiumSource.Premium);
105
107 public static FeeReference ReinstatementPremium => Create(PremiumSource.ReinstatementPremium);
108
110 public static FeeReference ReinstatementBrokerage => Create(LossSource.ReinstatementBrokerage);
111
113 public static FeeReference Losses => Create(LossSource.Losses);
114 #endregion Static Factory Methods
115
116 #region Equality Overrides
120 public bool Equals(FeeReference other) => ReferenceEquals(this, other) ||
121 other != null && (ReferenceEquals(_ref, other._ref) ||
122 _ref != null && other._ref != null && _ref.SequenceEqual(other._ref));
123
127 public override bool Equals(object obj) =>
128 obj is FeeReference feeReference && Equals(feeReference);
129
132 public override int GetHashCode()
133 {
134 unchecked
135 {
136 return _ref?.Aggregate(17, (hash, path) => hash * 23 + path.GetHashCode()) ?? 0;
137 }
138 }
139 #endregion Equality Overrides
140 }
141}
Base class used by all types and resources.
Definition APIType.cs:8
Represents a reference, used in Fee objects.
static FeeReference Losses
Layer Losses Reference.
static FeeReference ReinstatementBrokerage
Reinstatement Brokerage Reference.
LossSource
Sources of Losses.
static FeeReference Premium
Premium reference.
bool Equals(FeeReference other)
Determine if this FeeReference is equivalent to another.
static FeeReference Create(Fee source)
Create a reference to a Fee source.
static FeeReference Create(LossSource source)
Create a reference to a Loss source.
static FeeReference CreateFromFeeName(string name)
Create a reference to a Fee from its name.
PremiumSource
Sources of Premium.
FeeReference()
Default constructor.
override int GetHashCode()
Get the HashCode for this FeeReference.
static FeeReference ReinstatementPremium
Reinstatement Premium Reference.
static FeeReference CreateFromPremiumOrLossName(string name)
Create a reference to a Premium or Loss from its name.
static FeeReference Create(PremiumSource source)
Create a reference to a Premium source.
override bool Equals(object obj)
Determine if this FeeReference is equivalent to another object.
List< string > _ref
The reference path.
Abstract representation of a fee. This resource type cannot be instantiated instead derived resource ...
Definition Fee.cs:14
string name
A user friendly name for this fee.
Definition Fee.cs:18