public static DostawcaTowaruModel UzyskajDostawcePoId(long idDostawcy, int idTowaru) { OcenyModel oceny = OcenyModel.UzyskajOcenyDostawcy(idDostawcy); using (SqlConnection connection = new SqlConnection(DostawcaModel.connectionString)) { connection.Open(); string queryString = "SELECT Nazwa FROM dbo.Dostawca WHERE Identyfikator = " + idDostawcy; SqlCommand command = new SqlCommand(queryString, connection); var value = command.ExecuteScalar(); string nazwa = value.ToString(); queryString = "SELECT CenaJednostkowa FROM dbo.Oferta WHERE IdDostawcy = " + idDostawcy + " AND IdTowaru = " + idTowaru; command = new SqlCommand(queryString, connection); var value2 = (float)command.ExecuteScalar(); double cenaJednostkowa = value2; return(new DostawcaTowaruModel { Identyfikator = idDostawcy, Nazwa = nazwa, OcenyDostawcy = oceny, CenaJednostkowaTowaru = cenaJednostkowa }); } }
public static long UzyskajIndeksNajlepszegoDostawcy(int idTowaru) { List <long> indeksyDostawcow = UzyskajListeIdDostawcowMajacychWOfercieTowar(idTowaru); if (indeksyDostawcow.Count == 0) { return(-2); } List <OcenyModel> ocenyDostawcow = new List <OcenyModel>(); foreach (long indeksDostawcy in indeksyDostawcow) { var ocena = OcenyModel.UzyskajOcenyDostawcy(indeksDostawcy); if (ocena != null) { ocenyDostawcow.Add(ocena); } } if (ocenyDostawcow.Count == 0) { return(-1); } var idNajlepszegoDostawcy = 0; var najlepszaSredniaOcen = 0.0; var najgorszaSkladowaOcena = 0; foreach (OcenyModel ocena in ocenyDostawcow) { var sredniaJakosc = ocena.SredniaJakosc; var sredniCzasTrwania = ocena.SredniCzasTrwaniaDostawy; var srednieOpoznienie = ocena.SrednieOpoznienieDostawcy; var biezacaNajgorszaSkladowa = 0; if (sredniaJakosc != null && sredniCzasTrwania != null && srednieOpoznienie != null) { biezacaNajgorszaSkladowa = Math.Min(sredniaJakosc.Value, Math.Min(sredniCzasTrwania.Value, srednieOpoznienie.Value)); } var sumaOcen = (sredniaJakosc != null ? sredniaJakosc : 0) + (sredniCzasTrwania != null ? sredniCzasTrwania : 0) + (srednieOpoznienie != null ? srednieOpoznienie : 0); var biezacaSredniaOcen = (double)(sumaOcen / 3); if ((biezacaSredniaOcen == najlepszaSredniaOcen && biezacaNajgorszaSkladowa > najgorszaSkladowaOcena && sredniaJakosc != null && sredniCzasTrwania != null && srednieOpoznienie != null) || biezacaSredniaOcen > najlepszaSredniaOcen) { idNajlepszegoDostawcy = ocena.Id; najlepszaSredniaOcen = biezacaSredniaOcen; najgorszaSkladowaOcena = biezacaNajgorszaSkladowa; } } return(idNajlepszegoDostawcy); }