public IActionResult AddFromFile() { var model = new AddFromFileViewModel(); var allClinics = _clinicRepository.GetAll() .Select(a => new SelectListItem { Text = a.Name, Value = a.Id.ToString() } ).ToList(); model.Clinics = allClinics; if (User.IsInRole(Models.User.DOCTOR_ROLE)) { var doctorId = User.FindFirstValue(ClaimTypes.NameIdentifier); var clinicId = _clinicRepository.GetDoctorsClinics(doctorId).FirstOrDefault().Id; model.ClinicId = clinicId; } return(View(model)); }
public IActionResult AddFromFile(AddFromFileViewModel model) { try { var cases = VirusCaseMap.ReadCSVFile(model.File.OpenReadStream()); foreach (var item in cases) { item.Id = Guid.NewGuid().ToString(); var region = _regionRepository.GetByName(item.Region.Name); if (region == null) { throw new Exception($"Region {item.Region.Name} not exist"); } else { item.RegionId = region.Id; } var mode = _workModeRepository.GetByName(item.WorkMode.Name); if (mode == null) { throw new Exception($"Work mode {item.WorkMode.Name} not exist"); } else { item.WorkModeId = mode.Id; } if (User.IsInRole(Models.User.DOCTOR_ROLE)) { var user = _userManager.GetUserAsync(User).Result; if (string.IsNullOrEmpty(user.ClinicId)) { throw new Exception($"Current doctor have no clinic"); } else { item.ClinicId = user.ClinicId; } } else { item.ClinicId = model.ClinicId; } item.WorkMode = mode; item.Region = region; _virusCaseRepository.Add(item); _logger.LogInformation("Virus case added."); } return(RedirectToAction(nameof(List))); } catch (Exception ex) { ModelState.AddModelError(string.Empty, ex.Message); var allClinics = _clinicRepository.GetAll() .Select(a => new SelectListItem { Text = a.Name, Value = a.Id.ToString() } ).ToList(); model.Clinics = allClinics; return(View(model)); } return(RedirectToAction("AddFromFile")); }