Mettiamo che hai recuperato i dati dal db e li hai salvati inizializzando delle proprietà di una classe, ad esempio
codice:
public class CalcoloProvvigini
{
private List<float> mScaglioni { get; set; }
private List<float> mPercentuali { get; set; }
private float mFatturato { get; set; }
public CalcoloProvvigini(string Agente)
{
/*
inizializzando la classe puoi passare come argomento l'agente
di cui estrarre il fatturato mensile e, quindi, richiamare un metodo
della classe che recupera tutti i dati dal db per i calcoli
*/
RecuperaDati(Agente);
}
private void RecuperaDati(string ag)
{
// qui recuperi i dati dal db e valorizzi le proprità scaglioni e fatturato
}
public Dictionary<string, float> Provvigioni(float fatturato = null)
{
// ho indicato un argomento facoltativo perchè in caso tu volessi
// per qualsiasi motivo passare un valore diverso lo puoi fare
fatturato = fatturato != null ? fatturato : mFatturato;
// controllo che sia stao valorizzato il parametro degli scaglioni
if (mScaglioni == null || mPercentuali == null)
{
return;
}
float a, b c;
Dictionary<string, float> result = new Dictionary<string, float>();
if (fatturato <= mScaglioni[0])
{
a = fatturato * (mPercentuali[0] / 100);
result.Add("Scaglione1", a);
}
else if (fatturato > mScaglioni[0] && fatturato <= mScaglioni[1])
{
a = mScaglioni[0] * (mPercentuali[0] / 100);
b = (fatturato - mScaglioni[0]) * (mPercentuali[1] / 100);
result.Add("Scaglione1", a);
result.Add("Scaglione2", b);
}
else if (fatturato > mScaglioni[1])
{
a = mScaglioni[0] * (mPercentuali[0] / 100);
b = mScaglioni[1] * (mPercentuali[1] / 100);
c = (fatturato - mscaglioni[1]) * (mPercentuali[2] / 100);
result.Add("Scaglione1", a);
result.Add("Scaglione2", b);
result.Add("Scaglione3", c);
}
return result;
}
}
Considera due cose:
- ho scritto una cosa al volo e senza controllarla perchè l'ho scritta direttamente qui nel forum
- ho dato per scontato che gli scaglioni sono tre, se non sono sempre uguali per categoria il sistema deve essere rivisto
Chiaramente è un'idea, una traccia che ti potrebbe servire coma spunto, di certo non la soluzione definitiva....