public static void AddOrder() { try { int id = Ask.ForMedicineId("Podaj ID leku do sprzedaży: "); DateTime saleDate = Ask.ForDate("Podaj datę sprzedaży bądź pozostaw puste aby uzupełnić bieżącą datą: ", true, DateTime.Now); decimal amount = Ask.ForDecimal("Podaj ilość sprzedawanych sztuk: "); using (var medicine = new Medicine()) { medicine.Reload(id); while (medicine.Amount < amount) { ConsoleEx.WriteLine(ConsoleColor.Red, "Wprowadzona ilość sztuk przekracza ilość w magazynie. "); if (Ask.ForBool($"Czy ustawić ilość na maksymalną dostepną ilość {medicine.Amount} t/n: ")) { amount = medicine.Amount; } else { amount = Ask.ForDecimal("Podaj nową ilość sprzedawanych sztuk: "); } } int? prescriptioId = null; Prescription prescription = null; if (medicine.WithPrescription) { string customerName = Ask.ForString("Podaj imię i nazwisko: "); string pesel = Ask.ForPesel("Podaje PESEL: "); string prescriptionNumber = Ask.ForString("Podaj numer recepty: "); prescription = new Prescription(customerName, pesel, prescriptionNumber); } if (Ask.ForBool($"Czy zapisać wprowadzone zamówienie t/n: ")) { medicine.Amount -= amount; medicine.Save(); if (medicine.WithPrescription && prescription != null) { using (prescription) { prescription.Save(); prescriptioId = prescription.ID; } } using (var order = new Order(prescriptioId, id, saleDate, amount)) { order.Save(); } } } } catch (Exception e) { ConsoleEx.WriteLine(ConsoleColor.Red, "Wystąpił błąd. ERROR: {0}", e.Message); } }
public static void SearchForMedicine() { //To do: //0. działa, ale do zmiany, //1. dodać zależność między typem a operatorem, //2. dodać dynamiczne generowanie poszczególnych list wyborów, //3. dodać mozliwość wyboru filtrowania po więcej niż jednym polu Console.WriteLine("Pola dostępne dla leków: "); Console.WriteLine(" 1. ID"); Console.WriteLine(" 2. Nazwa"); Console.WriteLine(" 3. Producent"); Console.WriteLine(" 4. Cena"); Console.WriteLine(" 5. Ilosc"); Console.WriteLine(" 6. Na receptę"); int fieldNum = Ask.ForIntListItem("Wybierz pole: ", 1, 6); Console.WriteLine(); Console.WriteLine("Operatory dostępne podczas wyszukiwania: "); Console.WriteLine(" 1. Równy"); Console.WriteLine(" 2. Różny"); Console.WriteLine(" 3. Zawiera"); Console.WriteLine(" 4. Zakres/Pomiędzy"); Console.WriteLine(" 5. Większy"); Console.WriteLine(" 6. Większy równy"); Console.WriteLine(" 7. Mniejszy"); Console.WriteLine(" 8. Mniejszy równy"); int conditionNum = Ask.ForIntListItem("Wybierz operator: ", 1, 8); string selectedField = ""; string selectedOperator = ""; object givenValue; object givenValue2; var sqlParam = new List <SqlParameter>(); switch (fieldNum) { default: selectedField = "ID"; if (conditionNum == 4) { givenValue = Ask.ForInt("Podaj wartość od: "); givenValue2 = Ask.ForInt("Podaj wartość do: "); sqlParam.Add(new SqlParameter() { ParameterName = "@" + selectedField.ToLower() + "To", Value = givenValue2 }); break; } givenValue = Ask.ForInt("Podaj wartość: "); break; case 2: selectedField = "Name"; if (conditionNum == 4) { givenValue = Ask.ForString("Podaj wartość od: "); givenValue2 = Ask.ForString("Podaj wartość do: "); sqlParam.Add(new SqlParameter() { ParameterName = "@" + selectedField.ToLower() + "To", Value = givenValue2 }); break; } givenValue = Ask.ForString("Podaj wartość: "); break; case 3: selectedField = "Manufacturer"; if (conditionNum == 4) { givenValue = Ask.ForString("Podaj wartość od: "); givenValue2 = Ask.ForString("Podaj wartość do: "); sqlParam.Add(new SqlParameter() { ParameterName = "@" + selectedField.ToLower() + "To", Value = givenValue2 }); break; } givenValue = Ask.ForString("Podaj wartość: "); break; case 4: selectedField = "Price"; if (conditionNum == 4) { givenValue = Ask.ForDecimal("Podaj wartość od: "); givenValue2 = Ask.ForDecimal("Podaj wartość do: "); sqlParam.Add(new SqlParameter() { ParameterName = "@" + selectedField.ToLower() + "To", Value = givenValue2 }); break; } givenValue = Ask.ForDecimal("Podaj wartość: "); break; case 5: selectedField = "Amount"; if (conditionNum == 4) { givenValue = Ask.ForString("Podaj wartość od: "); givenValue2 = Ask.ForString("Podaj wartość do: "); sqlParam.Add(new SqlParameter() { ParameterName = "@" + selectedField.ToLower() + "To", Value = givenValue2 }); break; } givenValue = Ask.ForString("Podaj wartość: "); break; case 6: selectedField = "WithPrescription"; if (conditionNum == 4) { givenValue = Ask.ForBool("Podaj wartość od: "); givenValue2 = Ask.ForBool("Podaj wartość do: "); sqlParam.Add(new SqlParameter() { ParameterName = "@" + selectedField.ToLower() + "To", Value = givenValue2 }); break; } givenValue = Ask.ForBool("Podaj wartość: "); break; } switch (conditionNum) { default: selectedOperator = " = #field#"; break; case 2: selectedOperator = " <> #field#"; break; case 3: selectedOperator = " like '%'+#field#+'%'"; break; case 4: selectedOperator = " between #field# and #field2#"; break; case 5: selectedOperator = " > #field#"; break; case 6: selectedOperator = " >= #field#"; break; case 7: selectedOperator = " < #field#"; break; case 8: selectedOperator = " <= #field#"; break; } sqlParam.Add(new SqlParameter() { ParameterName = "@" + selectedField.ToLower(), Value = givenValue }); string whereClausule = " where " + selectedField + selectedOperator.Replace("#field#", "@" + selectedField.ToLower()).Replace("#field2#", "@" + selectedField.ToLower() + "To"); DisplayMedicineList(Medicine.Search(whereClausule, sqlParam.ToArray())); }
static void Main(string[] args) { while (true) { ConsoleEx.WriteLine(Console.ForegroundColor, "I. Zarządzania listą leków: "); ConsoleEx.Write(Console.ForegroundColor, " 1. Dodanie leku - ".PadRight(40)); ConsoleEx.WriteLine(ConsoleColor.Green, "add"); ConsoleEx.Write(Console.ForegroundColor, " 2. Edycja leku - ".PadRight(40)); ConsoleEx.WriteLine(ConsoleColor.Green, "mod"); ConsoleEx.Write(Console.ForegroundColor, " 3. Usuwanie leku - ".PadRight(40)); ConsoleEx.WriteLine(ConsoleColor.Green, "del"); ConsoleEx.Write(Console.ForegroundColor, " 4. Wyświetlenie listy leków - ".PadRight(40)); ConsoleEx.WriteLine(ConsoleColor.Green, "show"); ConsoleEx.Write(Console.ForegroundColor, " 5. Wyszukiwanie leków - ".PadRight(40)); ConsoleEx.WriteLine(ConsoleColor.Green, "find"); ConsoleEx.WriteLine(Console.ForegroundColor, "II. Sprzedaż leków: "); ConsoleEx.Write(Console.ForegroundColor, " 1. Dodanie zamówienia - ".PadRight(40)); ConsoleEx.WriteLine(ConsoleColor.Green, "ord"); ConsoleEx.WriteLine(Console.ForegroundColor, "\nWyjście - exit "); Console.WriteLine(); string input = Ask.ForString("Wpisz polecenie: ").ToLower(); if (input == "exit") { break; } if (input == "add") { DisplayHeader(ConsoleColor.Green, "DODWANIE LEKU"); bool addNext; do { ProgramLogic.AddMedicine(); Console.WriteLine(); addNext = Ask.ForBool("Dodać kolejny lek t/n: "); Console.WriteLine(); } while (addNext); } if (input == "mod") { DisplayHeader(ConsoleColor.Green, "MODYFIKACJA LEKU"); bool modNext; do { ProgramLogic.ModifyMedicine(); Console.WriteLine(); modNext = Ask.ForBool("Czy zmieniany będzie kolejny lek t/n: "); Console.WriteLine(); } while (modNext); } if (input == "show") { DisplayHeader(ConsoleColor.Green, "LISTA WSZYSTKICH LEKÓW"); ProgramLogic.DisplayMedicineList(Medicine.LoadAll()); Console.WriteLine(); } if (input == "del") { DisplayHeader(ConsoleColor.Green, "USUWANIE LEKU"); bool delNext; do { ProgramLogic.DeleteMedicine(); Console.WriteLine(); delNext = Ask.ForBool("Czy usuwany będzie kolejny lek t/n: "); Console.WriteLine(); } while (delNext); } if (input == "ord") { DisplayHeader(ConsoleColor.Green, "SKŁADANIE ZAMÓWIENIA"); bool ordNext; do { ProgramLogic.AddOrder(); Console.WriteLine(); ordNext = Ask.ForBool("Czy dodać kolejne zamówienie t/n: "); Console.WriteLine(); } while (ordNext); } if (input == "find") { DisplayHeader(ConsoleColor.Green, "WYSZUKIWANIE LEKU"); bool findNext; do { ProgramLogic.SearchForMedicine(); Console.WriteLine(); findNext = Ask.ForBool("Czy wyszukać kolejny lek t/n: "); Console.WriteLine(); } while (findNext); } } void DisplayHeader(ConsoleColor color, string header) { ConsoleEx.WriteLine(color, "".PadLeft(header.Length + 4, '-')); ConsoleEx.WriteLine(color, $"--{header}--"); ConsoleEx.WriteLine(color, "".PadLeft(header.Length + 4, '-')); } }