public async Task <ActionResult> Add(AddStudyAbroadViewModel model) { if (ModelState.IsValid) { await StudyAbroadService.Save(model, (Session["User"] as UserModel).Id, HttpContext.Request.UserHostAddress); return(RedirectToAction("View", "Student", new { Id = model.StudentId })); } try { ViewBag.Student = await StudentService.GetStudent(model.StudentId); } catch (Exception e) { string message = string.Format("Invalid student ID {0}", model.StudentId); MvcApplication.LogException(new ArgumentException(message, nameof(model), e)); return(RedirectToAction("NotFound", "Error")); } await PrepareDropDowns(); return(View(model)); }
public async Task Save(AddStudyAbroadViewModel model) { const string sql = @" INSERT INTO [dbo].[StudyAbroad] ( StudentId, Year, Semester, CreditBearing, Internship, CountryId, ProgramId, StartDate, EndDate, City ) OUTPUT INSERTED.Id VALUES ( @StudentId, @Year, @Semester, @CreditBearing, @Internship, @CountryId, @ProgramId, @StartDate, @EndDate, @City )"; if (model.StartDate.HasValue) { model.StartDate = model.StartDate.Value.ToUniversalTime(); } if (model.EndDate.HasValue) { model.EndDate = model.EndDate.Value.ToUniversalTime(); } int studyAbroadId; try { studyAbroadId = (await UnitOfWork.Context().QueryAsync <int>(sql, new { StudentId = model.StudentId, Year = model.Year, Semester = model.Semester, CreditBearing = model.CreditBearing, Internship = model.Internship, CountryId = model.CountryId, ProgramId = model.ProgramId, StartDate = model.StartDate, EndDate = model.EndDate, City = model.City })).Single(); } catch (Exception e) { e.Data["SQL"] = sql; ErrorStore.LogException(e, HttpContext.Current); throw e; } try { await ReplaceProgramTypes(studyAbroadId, model.ProgramTypes); } catch (Exception) { // Caught and logged already. } }
public async Task Save(AddStudyAbroadViewModel model, int userId, string remoteIp) { using (TransactionScope scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { await StudyAbroadRepository.Save(model); await EventLogService.AddStudentEvent(userId, model.StudentId, EventLogTypes.AddStudentExperience, remoteIp); } }