// GET: BackOffice/Specimens/Create public async Task<ActionResult> Create(int imageId = 0, int formatId = 0, int processId = 0) { var s = new Specimen(); if (imageId > 0) { var image = await db.Set<Image>().FirstOrDefaultAsync(i => i.Id == imageId); if (image != null) { s.ImageId = image.Id; var doc = image.Document; var collection = doc.Collection; s.ReferenceCode = CodeGenerator.SuggestSpecimenCode(imageId); } else { return new HttpStatusCodeResult(HttpStatusCode.BadRequest, SpecimenStrings.Error_UnknownImage); } } if (formatId != 0) { s.FormatId = formatId; } if (processId != 0) { s.ProcessId = processId; } s.Translations.Add(new SpecimenTranslation { LanguageCode = LanguageDefinitions.DefaultLanguage }); return View(GenerateViewModel(s)); }
private bool DoesCodeAlreadyExist(Specimen s) { return db.Entities .Any(d => d.ReferenceCode == s.ReferenceCode && d.Id != s.Id); }
public async Task<ActionResult> Edit(Specimen specimen) { if (DoesCodeAlreadyExist(specimen)) { ModelState.AddModelError("ReferenceCode", SpecimenStrings.CodeAlreadyExists); } if (ModelState.IsValid) { db.Update(specimen); foreach (var t in specimen.Translations) { db.UpdateTranslation(t); } await db.SaveChangesAsync(); return RedirectToAction("Index"); } return View(GenerateViewModel(specimen)); }
private SpecimenEditViewModel GenerateViewModel(Specimen specimen) { var model = new SpecimenEditViewModel(); model.AvailableImages.Add(new SelectListItem { Value = "", Text = LayoutStrings.ChooseOne, Selected = true }); model.AvailableImages.AddRange( db.Set<Image>() .OrderBy(i => i.Id) .Select(i => new SelectListItem { Value = i.Id.ToString(), Text = i.ImageCode, Selected = specimen.ImageId == i.Id })); model.AvailableProcesses.Add(new SelectListItem { Value = "", Text = LayoutStrings.ChooseOne, Selected = true }); model.AvailableProcesses.AddRange( db.Set<Process>() .Select(p => new TranslatedViewModel<Process, ProcessTranslation> { Entity = p }) .ToList() .Select(vm => new SelectListItem { Value = vm.Entity.Id.ToString(), Text = vm.Translation.Value, Selected = specimen.ProcessId == vm.Entity.Id })); //model.AvailableProcesses.AddRange( // db.Set<ProcessTranslation>() // .Where(pt => pt.LanguageCode == LanguageDefinitions.DefaultLanguage) // .OrderBy(pt => pt.ProcessId) // .Select(pt => new SelectListItem // { // Value = pt.ProcessId.ToString(), // Text = pt.Value, // Selected = specimen.ProcessId == pt.ProcessId // })); model.AvailableFormats.Add(new SelectListItem { Value = "", Text = LayoutStrings.ChooseOne, Selected = true }); model.AvailableFormats.AddRange(db.Set<Format>() .OrderBy(f => f.Id) .Select(f => new SelectListItem { Value = f.Id.ToString(), Text = f.FormatDescription, Selected = specimen.FormatId == f.Id })); model.Specimen = specimen; return model; }
public async Task<ActionResult> Create(Specimen specimen) { if (DoesCodeAlreadyExist(specimen)) { ModelState.AddModelError("ReferenceCode", SpecimenStrings.CodeAlreadyExists); } if (ModelState.IsValid) { db.Add(specimen); await db.SaveChangesAsync(); return RedirectToAction("Index"); } return View(GenerateViewModel(specimen)); }