public override bool Equals(object obj) { if ((obj == null) || !this.GetType().Equals(obj.GetType())) { return(false); } else { RetribuzioneMansione rm = (RetribuzioneMansione)obj; return((DataInizioValidita == rm.DataInizioValidita) && (DataFineValitida == rm.DataFineValitida) && (Compenso == rm.Compenso)); } }
public int CompareTo(object obj) { if (obj == null) { return(1); } if (obj.GetType() != GetType()) { throw new ArgumentException(); } RetribuzioneMansione p = (RetribuzioneMansione)obj; return(DataInizioValidita.CompareTo(p.DataInizioValidita)); }
private bool RemoveRetribuzione(RetribuzioneMansione retribuzione) { return(Retribuzioni.Remove(retribuzione)); }
public void AddRetribuzione(RetribuzioneMansione retribuzione) { #region Vecchio Algoritmo di elmininazione delle inclusioni //List<RetribuzioneMansione> eliminareTemp=new List<RetribuzioneMansione>(); //foreach (RetribuzioneMansione singoleRetribuzioni in Retribuzioni) //{ // if (singoleRetribuzioni.DataInizioValidita.CompareTo(retribuzione.DataInizioValidita) >= 0 && // singoleRetribuzioni.DataFineValitida.CompareTo(retribuzione.DataFineValitida) <= 0) // eliminareTemp.Add(singoleRetribuzioni); //} //foreach (RetribuzioneMansione singoleRetribuzioni in eliminareTemp) //{ // RemoveRetribuzione(singoleRetribuzioni); //} #endregion if (retribuzione == null) { throw new ArgumentException("retribuzione == null"); } // Elimina tutte le retribuzioni incluse, estremi inclusi if (Retribuzioni.RemoveAll(singoleRetribuzioni => singoleRetribuzioni.DataInizioValidita >= retribuzione.DataInizioValidita && singoleRetribuzioni.DataFineValitida <= retribuzione.DataFineValitida) == 0) { /* Se la retribuzione NON includeva nessuna retribuzione, allora vi è la possibilita che * sia essa inclusa in una preesistente, quindi ciclo su tutte le retribuzioni * fino a trovarne una che la include completamente, estremi esclusi, * e la spezza e si inserisce * Gli estremi sono ESCLUSI per non causare errori di ArgumentOutOfRangeException:DateTime*/ foreach (RetribuzioneMansione singoleRetribuzioni in Retribuzioni) { if (singoleRetribuzioni.DataInizioValidita < retribuzione.DataInizioValidita && singoleRetribuzioni.DataFineValitida > retribuzione.DataFineValitida) { Retribuzioni.Add(new RetribuzioneMansione(retribuzione.DataFineValitida.AddMilliseconds(1), singoleRetribuzioni.DataFineValitida, singoleRetribuzioni.Compenso)); singoleRetribuzioni.DataFineValitida = retribuzione.DataInizioValidita.AddMilliseconds(-1); break; } } } /* Se la retribuzione inizia in una retribuzione e finisci in un'altra * queste istruzioni modificano le date di inizio e fine delle retribuzioni * nella quale la ritribuzione passata si inserisce e le modifica * se la retribuzione passata ha impostato MaxValue o MinValue, ed esiste già una retribuzione * preesistente con quei valori, il programma non fallisce grazie all'istruzione di controllo*/ RetribuzioneMansione lastTemp = GetRetribuzione(retribuzione.DataFineValitida); if (lastTemp != null && retribuzione.DataFineValitida != DateTime.MaxValue) { lastTemp.DataInizioValidita = retribuzione.DataFineValitida.AddMilliseconds(1); } RetribuzioneMansione firstTemp = GetRetribuzione(retribuzione.DataInizioValidita); if (firstTemp != null && retribuzione.DataInizioValidita != DateTime.MinValue) { firstTemp.DataFineValitida = retribuzione.DataInizioValidita.AddMilliseconds(-1); } // Dopo aver apportato tutte le modifiche alle retribuzioni, // inserisco la retribuzione fornita. Retribuzioni.Add(retribuzione); Retribuzioni.Sort(new RetribuzioneMansioneComparer()); }