public async Task <IActionResult> Create(OpportunityCreateViewModel model) { if (ModelState.IsValid) { var user = await _userManager.GetUserAsync(HttpContext.User); var organization = _context.Organizations .Where(x => x.Id == model.OrganizationId) .FirstOrDefault(); if (organization == null) { TempData["Messages"] = "Organization not found in request."; return(RedirectToAction(nameof(Index))); } var now = DateTime.Now; Opportunity opportunity = model.GetOpportunity(_imageManager); opportunity.CreatedBy = user; opportunity.Organization = organization; opportunity.CreatedDateTime = now; opportunity.UpdatedDateTime = now; if (string.IsNullOrEmpty(model.ContactEmail)) { opportunity.ContactEmail = user.Email; } _context.Add(opportunity); await _context.SaveChangesAsync(); TempData["Messages"] = $"\"{opportunity.Name}\" has been created."; if (Opportunity.RequiresOccurrences(model.OpportunityType)) { return(RedirectToAction(nameof(Occurrences), new { id = opportunity.Id })); } return(RedirectToAction(nameof(Index))); } return(View(model)); }
public async Task <IActionResult> Create(OpportunityCreateViewModel model) { if (ModelState.IsValid) { var user = await _userManager.GetUserAsync(HttpContext.User); var organizationsManagedByUser = _context.OrganizationAdministratorUsers .Where(x => x.UserId == user.Id) .Select(x => x.Organization) .ToList(); if (organizationsManagedByUser.Count != 1) { TempData["Messages"] = $"Failed to create opportunity."; return(RedirectToAction("Index", "Error")); } var now = DateTime.Now; Opportunity opportunity = model.GetOpportunity(_imageManager); opportunity.CreatedBy = user; opportunity.Organization = organizationsManagedByUser[0]; opportunity.CreatedDateTime = now; opportunity.UpdatedDateTime = now; if (string.IsNullOrEmpty(model.ContactEmail)) { opportunity.ContactEmail = user.Email; } _context.Add(opportunity); await _context.SaveChangesAsync(); if (Opportunity.RequiresOccurrences(model.OpportunityType)) { return(RedirectToAction(nameof(Occurrences), new { id = opportunity.Id })); } return(RedirectToAction(nameof(Index))); } return(View(model)); }