public static List <DoctorInfo> GetListOfDoctors(UserToken userToken) { if (userToken.ID.Equals(AuthenticationManager.SavedUsers.Find(item => item.userInfo.Username.Equals(userToken.userInfo.Username)))) { try { using (var db = new DatabaseMedAssistEntities()) { List <DoctorInfo> doctorInfos = new List <DoctorInfo>(); var query = from dbDoctor in db.DatabaseDoctors select dbDoctor; foreach (var item in query) { DoctorInfo doctorInfo = new DoctorInfo(item.DoctorName, item.DoctorID.GetValueOrDefault(), Convert.ToInt32(item.DoctorAge), item.DoctorPicture, item.DoctorHospital, item.DoctorType == "Psikolog" ? DoctorType.Psikolog : DoctorType.DokterUmum); doctorInfos.Add(doctorInfo); } doctorInfos.OrderBy(item => item.DoctorHospital); return(doctorInfos); } } catch (Exception ex) { //ui error happened return(null); } } else { //textbox login expired to UI return(null); } }
public static List <DatabaseUser> GetListOfPharmacy(UserToken userToken) { if (userToken.ID.Equals(AuthenticationManager.SavedUsers.Find(item => item.userInfo.Username.Equals(userToken.userInfo.Username)))) { try { using (var db = new DatabaseMedAssistEntities()) { var query = from pharmacy in db.DatabaseUsers where pharmacy.TipeUser == "Apotek" select pharmacy; List <DatabaseUser> pharmacies = query.ToList(); return(pharmacies); } } catch (Exception ex) { //ui error happened return(null); } } else { //textbox login expired to UI return(null); } }
public void Cancel(UserToken userToken, string selection, string detail) { if (userToken.ID.Equals(AuthenticationManager.SavedUsers.Find(item => item.userInfo.UserID.Equals(userToken.userInfo.UserID)))) { using (var db = new DatabaseMedAssistEntities()) { var query = db.DatabaseRequests.SingleOrDefault(k => k.SenderID == userToken.userInfo.UserID && k.Request == selection && k.RequestDetail == detail && k.IsLocked == false); if (query != null) { if (query.Request != "Ambulans" && query.Request != "Dokter") { string[] medicineDetail = query.RequestDetail.Split(','); var cancelledMedicine = db.DatabasePharmacyStocks.SingleOrDefault(k => k.ApotekID == query.ReceiverID && k.Obat == query.Request); cancelledMedicine.StokObat += Convert.ToInt32(medicineDetail[0]); } UpdateDatabase.UpdateRequest(query); } else { //textbox request cannot be canceled to UI } } } else { //textbox login expired to UI } }
public static void RedeemCode(string voucherCode, UserToken userToken) { if (userToken.ID.Equals(AuthenticationManager.SavedUsers.Find(item => item.userInfo.Username.Equals(userToken.userInfo.Username)))) { try { using (var db = new DatabaseMedAssistEntities()) { var query = db.DatabaseVouchers.SingleOrDefault(item => item.VoucherID.ToString() == voucherCode); if (query != null) { var user = db.DatabaseUsers.SingleOrDefault(item => item.UserID == userToken.userInfo.UserID); user.SaldoUser += query.Nominal; db.DatabaseVouchers.Remove(query); db.SaveChanges(); } else { //ui code not found } } } catch (Exception ex) { //ui error happened } } else { //textbox login expired to UI } }
public static UserToken Authenticate(string username, string password) { using (var db = new DatabaseMedAssistEntities()) { var query = from user in db.DatabaseUsers where string.Compare(username, user.Username, true) == 0 && user.Password == password select user; if (!query.Any()) { throw new Exception("Incorrect username or password"); } } UserToken userToken = new UserToken { ID = Guid.NewGuid() }; userToken.userInfo.Username = username; userToken.userInfo.Password = password; var findDupe = from users in SavedUsers where string.Compare(users.userInfo.Username, username, true) == 0 select users; foreach (var item in findDupe) { SavedUsers.Remove(item); } SavedUsers.Add(userToken); return(userToken); }
public static List <MedicineRequest> StartListeningForMedicineRequests(UserToken userToken) { try { using (var db = new DatabaseMedAssistEntities()) { var query = from request in db.DatabaseRequests where request.ReceiverID == userToken.userInfo.UserID select request; var medicine = from requests in query group requests by requests.SenderID; List <Medicine> medicines = new List <Medicine>(); List <MedicineRequest> medicineRequests = new List <MedicineRequest>(); int id = 1; foreach (var item in medicine) { var sender = db.DatabaseUsers.SingleOrDefault(k => k.UserID == item.Key); MedicineRequest medicineRequest = new MedicineRequest { ID = id, IsLocked = true, SenderName = sender.Nama, }; int currentItem = 0; foreach (var request in item) { if (currentItem == 0) { GeoCoordinate requestLocation = new GeoCoordinate(Convert.ToDouble(request.LocationLatitude), Convert.ToDouble(request.LocationLongitude)); medicineRequest.Location = requestLocation; medicineRequest.LocationDetail = request.LocationDetail; } string[] details = request.RequestDetail.Split(','); Medicine order = new Medicine { MedicineName = request.Request, Quantity = Convert.ToInt32(details[0]), Price = Convert.ToDouble(details[1]) }; medicines.Add(order); currentItem++; var result = db.DatabaseRequests.SingleOrDefault(k => k.SenderID == item.Key && k.Request == request.Request); result.IsLocked = true; } medicineRequest.Medicines = medicines; medicineRequests.Add(medicineRequest); } db.SaveChanges(); return(medicineRequests); } } catch (Exception ex) { //ui error happened return(null); } }
public static void RequestMedicine(UserToken userToken, GeoCoordinate location, string locationDetail, IEnumerable <Medicine> medicines, Guid pharmacyID, bool onlinePayment) { if (userToken.ID.Equals(AuthenticationManager.SavedUsers.Find(item => item.userInfo.Username.Equals(userToken.userInfo.Username)))) { try { using (var db = new DatabaseMedAssistEntities()) { double total = 0; var selectedPharmacy = db.DatabaseUsers.SingleOrDefault(k => k.UserID == pharmacyID); foreach (var item in medicines) { DatabaseRequest databaseRequest = new DatabaseRequest { IsLocked = false, SenderID = userToken.userInfo.UserID, ReceiverID = selectedPharmacy.UserID, LocationLatitude = Convert.ToSingle(location.Latitude), LocationLongitude = Convert.ToSingle(location.Longitude), LocationDetail = locationDetail, Request = item.MedicineName, RequestDetail = item.Quantity.ToString() + "," + (item.Price * item.Quantity).ToString() + "," + (onlinePayment == true ? "OnlinePayment" : "CashPayment") }; total += item.Price * item.Quantity; var reduceStock = db.DatabasePharmacyStocks.SingleOrDefault(k => k.Obat == item.MedicineName); reduceStock.StokObat -= item.Quantity; db.DatabaseRequests.Add(databaseRequest); } if (onlinePayment == true) { var user = db.DatabaseUsers.SingleOrDefault(k => k.UserID == userToken.userInfo.UserID); if (user.SaldoUser < Convert.ToDecimal(total)) { //ui not enough balance return; } else { user.SaldoUser -= Convert.ToDecimal(total); } } db.SaveChanges(); } } catch (Exception ex) { //ui error happened } } else { //textbox login expired to UI } }
public static void RegisterUser(UserInfo userInfo, string alamat, string tempatLahir, DateTime tanggalLahir, string nomorTelepon, GeoCoordinate geoCoordinate) { using (var db = new DatabaseMedAssistEntities()) { DatabaseUser databaseUser = new DatabaseUser { UserID = userInfo.UserID, Nama = userInfo.Name, Username = userInfo.Username, Password = userInfo.Password, Email = userInfo.EmailAddress, FotoProfil = userInfo.ProfileImage, TipeUser = userInfo.tipeUser.ToString(), Alamat = alamat, TempatLahir = tempatLahir, TanggalLahir = tanggalLahir, NomorTelepon = Convert.ToInt32(nomorTelepon), }; if (geoCoordinate != null) { databaseUser.LatitudeUser = Convert.ToSingle(geoCoordinate.Latitude); databaseUser.LongitudeUser = Convert.ToSingle(geoCoordinate.Longitude); } db.DatabaseUsers.Add(databaseUser); if (databaseUser.TipeUser == "RumahSakit") { DatabaseAmbulance databaseAmbulance = new DatabaseAmbulance { HealthcareID = userInfo.UserID, JumlahAmbulans = 0, HealthcareLatitude = Convert.ToSingle(geoCoordinate.Latitude), HealthcareLongitude = Convert.ToSingle(geoCoordinate.Longitude) }; db.DatabaseAmbulances.Add(databaseAmbulance); } else if (databaseUser.TipeUser == "Apotek") { var query = from medicines in db.DatabaseMedicines select medicines; foreach (var item in query) { DatabasePharmacyStock databasePharmacyStock = new DatabasePharmacyStock { ApotekID = userInfo.UserID, Obat = item.NamaObat, StokObat = 0 }; db.DatabasePharmacyStocks.Add(databasePharmacyStock); } } db.SaveChanges(); } }
public static void UpdateRequest(DatabaseRequest databaseRequest) { using (var db = new DatabaseMedAssistEntities()) { var item = db.DatabaseRequests.SingleOrDefault(k => k == databaseRequest); string[] requestDetail = item.RequestDetail.Split(','); if (item.Request == "Dokter") { var doctor = db.DatabaseDoctors.SingleOrDefault(k => k.DoctorName == requestDetail[0]); string requestDay = DateTime.Parse(requestDetail[1]).DayOfWeek.ToString(); switch (requestDay) { case "Monday": doctor.AppointmentMonday = false; break; case "Tuesday": doctor.AppointmentTuesday = false; break; case "Wednesday": doctor.AppointmentWednesday = false; break; case "Thursday": doctor.AppointmentThursday = false; break; case "Friday": doctor.AppointmentFriday = false; break; case "Saturday": doctor.AppointmentSaturday = false; break; case "Sunday": doctor.AppointmentSunday = false; break; } } else if (item.Request == "Ambulans") { var ambulance = db.DatabaseAmbulances.SingleOrDefault(k => k.HealthcareID == item.ReceiverID); ambulance.JumlahAmbulans++; } db.DatabaseRequests.Remove(item); db.SaveChanges(); } }
public static void StartListeningForDoctorRequests(UserToken userToken) { using (var db = new DatabaseMedAssistEntities()) { var query = from request in db.DatabaseRequests where request.Request == "Dokter" && request.ReceiverID == userToken.userInfo.UserID select request; foreach (var item in query) { item.IsLocked = true; } db.SaveChanges(); //fill list on ui based on query } }
public void ChangeProfileImage(byte[] newProfileImage) { using (var db = new DatabaseMedAssistEntities()) { var query = from users in db.DatabaseUsers where string.Compare(Username, users.Username, true) == 0 select users; foreach (var item in query) { item.FotoProfil = newProfileImage; } db.SaveChanges(); } ProfileImage = newProfileImage; }
public void ChangePassword(string newPassword) { using (var db = new DatabaseMedAssistEntities()) { var query = from users in db.DatabaseUsers where string.Compare(Username, users.Username, true) == 0 select users; foreach (var item in query) { item.Password = newPassword; } db.SaveChanges(); } Password = newPassword; }
public static void AddAmbulance(DatabaseAmbulance ambulance) { try { using (var db = new DatabaseMedAssistEntities()) { var query = db.DatabaseAmbulances.SingleOrDefault(k => k.HealthcareID == ambulance.HealthcareID); query.JumlahAmbulans += ambulance.JumlahAmbulans; db.SaveChanges(); } } catch (Exception ex) { } }
public static void AddStock(DatabasePharmacyStock stock) { try { using (var db = new DatabaseMedAssistEntities()) { var query = db.DatabasePharmacyStocks.SingleOrDefault(k => k.ApotekID == stock.ApotekID && k.Obat == stock.Obat); query.StokObat += stock.StokObat; db.SaveChanges(); } } catch (Exception ex) { } }
public static void ChangeUserInfo(UserToken userToken, DatabaseUser user) { try { using (var db = new DatabaseMedAssistEntities()) { var query = db.DatabaseUsers.SingleOrDefault(k => k.UserID == userToken.userInfo.UserID); query = user; db.SaveChanges(); } } catch (Exception ex) { //ui error happened } }
public static void ChangeDoctorInfo(DatabaseDoctor doctor, string name, string hospital) { try { using (var db = new DatabaseMedAssistEntities()) { var query = db.DatabaseDoctors.SingleOrDefault(k => k.DoctorName.Contains(name) && k.DoctorHospital == hospital); query = doctor; db.SaveChanges(); } } catch (Exception ex) { //ui error happened } }
public static DatabaseUser FindUser(UserToken userToken) { try { using (var db = new DatabaseMedAssistEntities()) { var query = db.DatabaseUsers.SingleOrDefault(k => k.UserID == userToken.userInfo.UserID); return(query); } } catch (Exception ex) { //ui error happened return(null); } }
public static DatabaseDoctor FindDoctor(string name, string hospital) { try { using (var db = new DatabaseMedAssistEntities()) { var query = db.DatabaseDoctors.SingleOrDefault(k => k.DoctorName.Contains(name) && k.DoctorHospital == hospital); return(query); } } catch (Exception ex) { //ui error happened return(null); } }
public static List <Medicine> GetListOfMedicine(UserToken userToken, Guid pharmacyID) { if (userToken.ID.Equals(AuthenticationManager.SavedUsers.Find(item => item.userInfo.Username.Equals(userToken.userInfo.Username)))) { try { using (var db = new DatabaseMedAssistEntities()) { List <Medicine> medicinesInPharmacy = new List <Medicine>(); var query = from stocks in db.DatabasePharmacyStocks where stocks.ApotekID == pharmacyID select stocks; foreach (var item in query) { var medicineInfo = db.DatabaseMedicines.SingleOrDefault(k => k.NamaObat == item.Obat); Medicine medicine = new Medicine { MedicineName = item.Obat, Quantity = item.StokObat.GetValueOrDefault(), MedicineImage = medicineInfo.GambarObat, MedicineType = medicineInfo.JenisObat, Benefit = medicineInfo.Manfaat, Description = medicineInfo.Keterangan, Price = Convert.ToDouble(medicineInfo.HargaObat) }; medicinesInPharmacy.Add(medicine); } return(medicinesInPharmacy); } } catch (Exception ex) { //ui error happened return(null); } } else { //textbox login expired to UI return(null); } }
public static void RecoverPassword(string emailAddress) { using (var db = new DatabaseMedAssistEntities()) { var query = from user in db.DatabaseUsers where string.Compare(emailAddress, user.Email, true) == 0 select user; if (!query.Any()) { //ui email is not registered return; } } try { MailMessage mail = new MailMessage(); SmtpClient smtpClient = new SmtpClient("smtp.gmail.com"); mail.From = new MailAddress("*****@*****.**"); mail.To.Add(emailAddress); mail.Subject = "Recover Password Asistensi Medis"; var recoveryRandomizer = new int[6]; Random random = new Random(); for (int i = 0; i < 6; i++) { recoveryRandomizer[i] = random.Next(10); } string recoveryCode = Convert.ToString(recoveryRandomizer); mail.Body = string.Format("Your recovery code for your account in Asistensi Medis is {0}", recoveryCode); smtpClient.Port = 587; smtpClient.Credentials = new System.Net.NetworkCredential("*****@*****.**", "myNAME...isCHANG!!1"); smtpClient.EnableSsl = true; smtpClient.Send(mail); //pop up with textbox for recovery and recoveryCode to check //if success(code match), open textbox to type new password, then update database //else reset textbox and allow next attempt(no max, wont send another code) } catch (Exception ex) { //ui error happened } }
public static void StartListeningForAmbulanceRequests(UserToken userToken) { using (var db = new DatabaseMedAssistEntities()) { var authority = from check in db.DatabaseUsers where check.UserID == userToken.userInfo.UserID && check.TipeUser == "RumahSakit" select check; if (authority.Any()) { var query = from request in db.DatabaseRequests where request.Request == "Ambulance" && request.ReceiverID == userToken.userInfo.UserID select request; var ambulanceCount = db.DatabaseAmbulances.SingleOrDefault(k => k.HealthcareID == userToken.userInfo.UserID); int ambulanceLeft = ambulanceCount.JumlahAmbulans.GetValueOrDefault(); int count = query.Count(); foreach (var item in query) { if (ambulanceLeft > 0) { item.IsLocked = true; ambulanceLeft--; count--; } if (ambulanceLeft == 0 || count == 0) { //fill list on ui based on items in query db.SaveChanges(); break; } } } else { throw new UnauthorizedException("Staf Pusat Kesehatan"); } } }
public static void RequestAmbulance(UserToken userToken, GeoCoordinate location, string locationDetail) { if (userToken.ID.Equals(AuthenticationManager.SavedUsers.Find(item => item.userInfo.Username.Equals(userToken.userInfo.Username)))) { try { using (var db = new DatabaseMedAssistEntities()) { var query = from ambulance in db.DatabaseAmbulances where ambulance.JumlahAmbulans > 0 select ambulance; var selectedAmbulance = query.OrderBy(item => GetDistance(Convert.ToDouble(item.HealthcareLatitude), Convert.ToDouble(item.HealthcareLongitude), location)).First(); DatabaseRequest databaseRequest = new DatabaseRequest { IsLocked = false, SenderID = userToken.userInfo.UserID, ReceiverID = selectedAmbulance.HealthcareID, LocationLatitude = Convert.ToSingle(location.Latitude), LocationLongitude = Convert.ToSingle(location.Longitude), LocationDetail = locationDetail, Request = "Ambulans" }; selectedAmbulance.JumlahAmbulans--; db.DatabaseRequests.Add(databaseRequest); db.SaveChanges(); } } catch (Exception ex) { //ui error happened } } else { //textbox login expired to UI } }
public static void RegisterDoctor(DoctorInfo doctorInfo, bool[] workday) { using (var db = new DatabaseMedAssistEntities()) { DatabaseDoctor databaseDoctor = new DatabaseDoctor { DoctorID = doctorInfo.DoctorID, DoctorName = doctorInfo.DoctorName, DoctorAge = doctorInfo.DoctorAge, DoctorHospital = doctorInfo.DoctorHospital, DoctorPicture = doctorInfo.DoctorPicture, DoctorType = doctorInfo.doctorType.ToString(), AppointmentMonday = workday[0], AppointmentTuesday = workday[1], AppointmentWednesday = workday[2], AppointmentThursday = workday[3], AppointmentFriday = workday[4], AppointmentSaturday = workday[5], AppointmentSunday = workday[6] }; db.DatabaseDoctors.Add(databaseDoctor); db.SaveChanges(); } }
public static void RequestDoctor(UserToken userToken, GeoCoordinate location, string locationDetail, DoctorType doctorType, DateTime appointmentDate, DateTime requestDate) { if (userToken.ID.Equals(AuthenticationManager.SavedUsers.Find(item => item.userInfo.Username.Equals(userToken.userInfo.Username)))) { try { using (var db = new DatabaseMedAssistEntities()) { string day = appointmentDate.DayOfWeek.ToString(); var query = from dbDoctor in db.DatabaseDoctors where dbDoctor.DoctorType == doctorType.ToString() && (day == "Monday" ? dbDoctor.AppointmentMonday : day == "Tuesday" ? dbDoctor.AppointmentTuesday : day == "Wednesday" ? dbDoctor.AppointmentWednesday : day == "Thursday" ? dbDoctor.AppointmentThursday : day == "Friday" ? dbDoctor.AppointmentFriday : day == "Saturday" ? dbDoctor.AppointmentSaturday : dbDoctor.AppointmentSunday) == false select dbDoctor; int count = query.Count(); if (count == 0) { //ui doctor not available } else { var selectedDoctor = query.OrderBy(item => GetDistance(Convert.ToDouble(item.HospitalLatitude), Convert.ToDouble(item.HospitalLongitude), location)).ThenByDescending(freeday => Convert.ToInt16(freeday.AppointmentMonday) + Convert.ToInt16(freeday.AppointmentTuesday) + Convert.ToInt16(freeday.AppointmentWednesday) + Convert.ToInt16(freeday.AppointmentThursday) + Convert.ToInt16(freeday.AppointmentFriday) + Convert.ToInt16(freeday.AppointmentSaturday) + Convert.ToInt16(freeday.AppointmentSunday)).First(); DoctorInfo doctorInfo = new DoctorInfo(selectedDoctor.DoctorName, selectedDoctor.DoctorID.GetValueOrDefault(), Convert.ToInt32(selectedDoctor.DoctorAge), selectedDoctor.DoctorPicture, selectedDoctor.DoctorHospital, selectedDoctor.DoctorType == "Psikolog" ? DoctorType.Psikolog : DoctorType.DokterUmum); var healthcare = db.DatabaseUsers.SingleOrDefault(k => k.Nama == selectedDoctor.DoctorHospital); DatabaseRequest databaseRequest = new DatabaseRequest { IsLocked = false, SenderID = userToken.userInfo.UserID, ReceiverID = healthcare.UserID, LocationLatitude = Convert.ToSingle(location.Latitude), LocationLongitude = Convert.ToSingle(location.Longitude), LocationDetail = locationDetail, Request = "Dokter", RequestDetail = selectedDoctor.DoctorID.ToString() + "," + appointmentDate.ToShortDateString() + "," + requestDate.ToShortDateString() }; switch (day) { case "Monday": selectedDoctor.AppointmentMonday = true; break; case "Tuesday": selectedDoctor.AppointmentTuesday = true; break; case "Wednesday": selectedDoctor.AppointmentWednesday = true; break; case "Thursday": selectedDoctor.AppointmentThursday = true; break; case "Friday": selectedDoctor.AppointmentFriday = true; break; case "Saturday": selectedDoctor.AppointmentSaturday = true; break; case "Sunday": selectedDoctor.AppointmentSunday = true; break; } db.DatabaseRequests.Add(databaseRequest); db.SaveChanges(); } } } catch (Exception ex) { //ui error happened } } else { //textbox login expired to UI } }