public async Task <IActionResult> VisitForm(string reserveDate, int docId = 0, int patientId = 0) { if (docId == 0 || patientId == 0) { return(NotFound()); } DateTime dt = Convert.ToDateTime(reserveDate); var reserve = await _db.Reservations .Include(a => a.Patient) .FirstOrDefaultAsync(a => a.DoctorId.Equals(docId) && a.PatientId.Equals(patientId) && a.ReserveDate.Equals(dt)); if (reserve == null) { return(NotFound()); } var addVisitViewModel = new AddVisitViewModel() { Reservation = reserve }; return(View(addVisitViewModel)); }
public ActionResult AddScheduledVisit(AddVisitViewModel model) { if (!ModelState.IsValid) { View(model); } var names = model.CityName.Split(','); if (_repository.IsNewCity(model.CityName)) { try { _repository.AddCity(new City { Name = names[0], Latitude = model.Latitude, Longitude = model.Longitude }); } catch (Exception ex) { _loger.Log(ex.Message, LogLevel.Error, DateTime.Now, GetType().ToString()); return(View("CustomError")); } } var visit = new Visit { Date = null, UserId = User.Identity.GetUserId(), Comment = null, Rate = null, CityId = _repository.Cities.First(c => c.Name == names[0]).Id, IsVisited = false }; try { _repository.SaveVisit(visit); } catch (Exception ex) { _loger.Log(ex.Message, LogLevel.Error, DateTime.Now, GetType().ToString()); return(View("CustomError")); } _loger.Log("User" + User.Identity.Name + "adds a visit", LogLevel.Info, DateTime.Now); return(RedirectToAction("Index", "Visit")); }
public async Task <IActionResult> AddVisit(AddVisitViewModel visitViewModel) { if (visitViewModel.Reservation.DoctorId == 0 || visitViewModel.Reservation.PatientId == 0) { return(StatusCode(404)); } var reserve = await _db.Reservations .FirstOrDefaultAsync(a => a.DoctorId.Equals(visitViewModel.Reservation.DoctorId) && a.PatientId.Equals(visitViewModel.Reservation.PatientId) && a.ReserveDate.Equals(visitViewModel.Reservation.ReserveDate)); if (reserve == null) { return(StatusCode(404)); } string[] drugs = null; string[] number = null; if (!string.IsNullOrEmpty(visitViewModel.DrugList)) { string[] temp = null; try { temp = visitViewModel.DrugList.Split('،'); } catch (Exception) { return(StatusCode(403)); } drugs = temp.Where((x, i) => i % 2 == 0).ToArray(); number = temp.Where((x, i) => i % 2 != 0).ToArray(); if (drugs.Any(a => a.Equals("")) || number.Any(a => a.Equals(""))) { return(StatusCode(403)); } if (drugs.Length != number.Length) { return(StatusCode(403)); } } DateTime reserveDateTimeAgain = DateTime.MinValue; if (!(string.IsNullOrEmpty(visitViewModel.ReserveDateAgain) || string.IsNullOrEmpty(visitViewModel.ReserveTimeAgain))) { if (!TimeSpan.TryParse(visitViewModel.ReserveTimeAgain, out var time)) { return(StatusCode(402)); } var dates = visitViewModel.ReserveDateAgain.Split('/'); reserveDateTimeAgain = new DateTime(Int32.Parse(dates[0]), int.Parse(dates[1]), int.Parse(dates[2]), new PersianCalendar()); reserveDateTimeAgain = reserveDateTimeAgain.Date + time; if (reserveDateTimeAgain.Date <= DateTime.Today.Date) { return(StatusCode(406)); } var dayOfWeek = reserveDateTimeAgain.DayOfWeek switch { DayOfWeek.Sunday => "یکشنبه", DayOfWeek.Monday => "دوشنبه", DayOfWeek.Tuesday => "سه شنبه", DayOfWeek.Wednesday => "چهارشنبه", DayOfWeek.Thursday => "پنج شنبه", DayOfWeek.Saturday => "شنبه", _ => null }; if (string.IsNullOrEmpty(dayOfWeek)) { return(StatusCode(401)); } var day = await _db.WeekDays.FirstOrDefaultAsync(a => a.DoctorId.Equals(visitViewModel.Reservation.DoctorId) && a.DayName.Equals(dayOfWeek)); switch (time.Hours) { case 8 when !day.EightTen.Equals("خالی"): return(StatusCode(400)); case 10 when !day.TenTwelve.Equals("خالی"): return(StatusCode(400)); case 12 when !day.TwelveFourteen.Equals("خالی"): return(StatusCode(400)); case 14 when !day.FourteenSixteen.Equals("خالی"): return(StatusCode(400)); } var isAvailableReserve = await _db.Reservations .AnyAsync(a => a.DoctorId.Equals(visitViewModel.Reservation.DoctorId) && a.ReserveDate.Equals(reserveDateTimeAgain)); var isPatientBusy = await _db.Reservations .AnyAsync(a => a.PatientId.Equals(reserve.PatientId) && a.ReserveDate.Equals(reserveDateTimeAgain) && a.ReserveStatus.Contains("در انتظار ویزیت")); if (isPatientBusy) { return(StatusCode(409)); } if (isAvailableReserve) { return(StatusCode(405)); } } InsuranceProvider insurance = null; if (!string.IsNullOrEmpty(visitViewModel.InsuranceProviderName)) { if (drugs == null) { return(StatusCode(409)); } insurance = await _db.InsuranceProviders .FirstOrDefaultAsync(a => a.InsuranceName.Equals(visitViewModel.InsuranceProviderName)); } if (!reserveDateTimeAgain.Equals(DateTime.MinValue)) { var reserveAgain = new Reservation() { Doctor = await _db.Doctors.FindAsync(visitViewModel.Reservation.DoctorId), Patient = await _db.Patients.FindAsync(visitViewModel.Reservation.PatientId), ReserveDate = reserveDateTimeAgain, ReserveStatus = "در انتظار ویزیت" }; await _db.Reservations.AddAsync(reserveAgain); await _db.SaveChangesAsync(); } reserve.ReserveStatus = "ویزیت شده"; var newVisit = new Visit() { CauseOfPatientReferral = visitViewModel.Visit.CauseOfPatientReferral, DoctorAssessment = visitViewModel.Visit.DoctorAssessment, DoctorNote = visitViewModel.Visit.DoctorNote, Reservation = reserve, InsuranceProvider = insurance }; await _db.Visits.AddAsync(newVisit); await _db.SaveChangesAsync(); _db.Reservations.Update(reserve); await _db.SaveChangesAsync(); if (drugs != null) { var newPrescription = new Prescription() { PaymentMethod = "نقدی", Status = "پرداخت نشده", Visit = newVisit }; await _db.Prescriptions.AddAsync(newPrescription); await _db.SaveChangesAsync(); int i = 0; foreach (var drug in drugs) { var drugDb = await _db.Drugs.FirstOrDefaultAsync(a => a.Name.Equals(drug)); if (drugDb != null) { var newPresDrug = new PrescriptionDrug() { Drug = drugDb, Prescription = newPrescription, Count = int.Parse(number[i]), IsBought = false }; i++; await _db.PrescriptionDrugs.AddAsync(newPresDrug); await _db.SaveChangesAsync(); } else { var unknownCategory = await _db.DrugCategories .FirstOrDefaultAsync(a => a.Name.Equals("نامشخص")); if (unknownCategory == null) { var newUnknownCategory = new DrugCategory() { Name = "نامشخص" }; await _db.DrugCategories.AddAsync(newUnknownCategory); await _db.SaveChangesAsync(); unknownCategory = newUnknownCategory; } var newDrug = new Drug() { Name = drug, Count = 0, DrugCategory = unknownCategory, Cost = 9999, Instruction = "نامشخص", Status = false }; await _db.Drugs.AddAsync(newDrug); await _db.SaveChangesAsync(); var newPresDrug = new PrescriptionDrug() { Drug = newDrug, Prescription = newPrescription, Count = int.Parse(number[i]), IsBought = false }; i++; await _db.PrescriptionDrugs.AddAsync(newPresDrug); await _db.SaveChangesAsync(); } } } return(StatusCode(200)); }
public AddVisitView(MainViewModel mainVM) { InitializeComponent(); DataContext = new AddVisitViewModel(mainVM); }