public async Task OnRegister_WhenPassValidUser_AddValidUser() { var options = new DbContextOptionsBuilder <UserDbContext>() .UseInMemoryDatabase(databaseName: "InMemoryUserDbContext") .Options; var user = new PortFreightUser() { UserName = "******", SenderId = "Test1234", Email = "*****@*****.**", PasswordHash = "TestTest1!" }; using (var context = new UserDbContext(options)) { await context.Users.AddAsync(user); context.SaveChanges(); } using (var context = new UserDbContext(options)) { Assert.AreEqual(1, context.Users.Count()); Assert.AreEqual(user.UserName, context.Users.FirstOrDefault(x => x.UserName == user.UserName).UserName); } }
public void PreApprovedUserList(PortFreightUser user) { if (preApprovedUsers == null) { invitedUsers = new List <InvitedColleagueViewMidel>(); var registeredUsers = _userContext.Users .Where(x => x.SenderId == user.SenderId); var registeredEmails = registeredUsers.Select(x => x.Email); var allPreapprovedUsers = _userContext.PreApprovedUsers .Where(x => x.SenderId == user.SenderId) .Where(x => x.EmailAddress.Contains('@')) .GroupBy(x => x.EmailAddress) .Select(x => x.FirstOrDefault()) .Select(x => x.EmailAddress) .Union(registeredEmails) .Distinct(); foreach (string invitedUser in allPreapprovedUsers) { bool registered = registeredUsers.Any(x => x.Email == invitedUser); invitedUsers.Add(new InvitedColleagueViewMidel { Email = invitedUser, CurrentStatus = registered == true ? "active" : "invited" }); } } }
public async Task <IActionResult> OnPostAsync() { PortFreightUser user = await _userManager.GetUserAsync(HttpContext.User); mapInputsToMSDI(user); if (doAllPortsAndShipsExist()) { try { _context.Msd1Data.Update(msd1); _context.SaveChanges(); TempData.Put("EditSuccess", "Submission has been successfully amended"); return(RedirectToPage("/Submissions/FindSubmission", new { area = "Admin" })); } catch (Exception e) { _logger.LogError(e, e.Message); ModelState.AddModelError("CustomError", "There is a problem save the changes"); return(Page()); } } return(Page()); }
public async Task OnLogin_WhenContactDetailsUnavailable_RedirectToContactDetails() { var portFreightUser = new PortFreightUser() { UserName = "******", Email = "*****@*****.**", PasswordHash = "TestTest1!", SenderId = "T12345" }; portFreightUsersList = new List <PortFreightUser>(); portFreightUsersList.Add(portFreightUser); loginModel.Input = new LoginModel.InputModel { Email = portFreightUser.Email, Password = portFreightUser.PasswordHash, RememberMe = true }; mockfakeSignInManager.Setup(x => x.PasswordSignInAsync(loginModel.Input.Email, loginModel.Input.Password, loginModel.Input.RememberMe, true)).ReturnsAsync(Microsoft.AspNetCore.Identity.SignInResult.Success); mockUserManager.Setup(u => u.FindByEmailAsync(It.IsAny <string>())).ReturnsAsync(portFreightUsersList.FirstOrDefault()); var result = (RedirectToPageResult)await loginModel.OnPostAsync(); Assert.IsNotNull(result); Assert.AreEqual("/Profile/ContactDetails", result.PageName); Assert.IsInstanceOfType(result, typeof(RedirectToPageResult)); }
private SenderType FindSavedPort(PortFreightUser user) { return(_context.SenderType.Include(p => p.SenderIdPort) .Where(p => p.SenderId == user.SenderId) .Include(p => p.SenderIdPort) .SingleOrDefault()); }
public async Task <IActionResult> OnPostAsync() { PopulatePortFreightUser(); if (ModelState.IsValid) { var user = new PortFreightUser { UserName = Input.Email, Email = Input.Email, SenderId = Input.SenderId }; var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { _logger.LogInformation("User created a new account with password"); var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { userId = user.Id, code = code }, protocol: "https"); _emailSender.SendEmail(Input.Email, "Confirm your email", _htmlEncoder.Encode(callbackUrl)); return(RedirectToPage("RegisterConfirmation")); } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } return(Page()); }
public async Task <IActionResult> OnGetAsync(string sortOrder) { LoggedInUser = await _userManager.GetUserAsync(HttpContext.User); InitialisePage(LoggedInUser); MSD3VM = CustomExtensions.NotNullOrEmpty(TempData) && TempData[MSD3Key] != null ? new MSD3ViewModel(TempData.GetKeep <MSD3ViewModel>(MSD3Key)) : new MSD3ViewModel(); string submitted = CustomExtensions.NotNullOrEmpty(TempData) && TempData[SubmittedKey] != null?TempData.GetKeep <string>(SubmittedKey) : ""; var existingParent = FindSubmission(); if (existingParent != null) { TempData.Put("SubmittedKey", "true"); TempData.Remove(MSD3Key); AssignMSD3ToInput(existingParent); } else { string slectedYearQuarter = MSD23.Year.ToString() + MSD23.Quarter.ToString(); if (submitted.ToString() == "true") { MSD3VM.AgentSummary.Clear(); TempData.Remove(MSD3Key); } else if (submitted.ToString() != "false" + slectedYearQuarter) { MSD3VM.AgentSummary.Clear(); TempData.Remove(MSD3Key); } TempData.Put("SubmittedKey", "false" + slectedYearQuarter); } return(Page()); }
public async Task <IActionResult> OnPostAsync() { PortFreightUser user = await _userManager.GetUserAsync(HttpContext.User); mapInputsToMSD2(user); if (!WeightIsValid(msd2.GrossWeightInward, msd2.GrossWeightOutward, msd2.Year, msd2.Quarter, msd2.ReportingPort, msd2.SenderId)) { return(Page()); } if (!Msd2ReportingPortExists(msd2.ReportingPort)) { ModelState.AddModelError("ReportingPort", "The Reporting port entered is not in the global port list"); return(Page()); } try { _context.Msd2.Update(msd2); _context.SaveChanges(); TempData.Put("EditSuccess", "Submission has been successfully amended"); return(RedirectToPage("./Index", new { area = "Admin" })); } catch (Exception e) { _logger.LogError(e, e.Message); ModelState.AddModelError("CustomError", "There is a problem save the changes"); return(Page()); } }
public void ReinstateUser(string id) { PortFreightUser = _userContext.Users.FirstOrDefault(x => x.Id == id); PortFreightUser.LockoutEnd = null; UpdateAndSave(); }
private void InitialisePage(PortFreightUser user) { MSD23 = CustomExtensions.NotNullOrEmpty(TempData) && TempData[MSD23Key] != null ? new MSD23(TempData.GetKeep <MSD23>(MSD23Key)) : new MSD23(); var locodes = (from p in _context.SenderIdPort join t in _context.SenderType on p.SenderId equals t.SenderId where (t.IsPort == true) && p.SenderId == user.SenderId select p.Locode).ToList(); }
public void DisableUser(string id) { PortFreightUser = _userContext.Users.FirstOrDefault(x => x.Id == id); PortFreightUser.LockoutEnd = DateTime.Now.AddMonths(18); UpdateAndSave(); }
private void InitialisePage(PortFreightUser user) { MSD23 = CustomExtensions.NotNullOrEmpty(TempData) && TempData[MSD23Key] != null ? new MSD23(TempData.GetKeep <MSD23>(MSD23Key)) : new MSD23(); Senders = _context.OrgList .Where(s => s.IsAgent || s.IsLine) .Select(s => s.OrgId.ToString() + " - " + s.OrgName.ToString() ).ToList(); }
public async Task <IActionResult> OnGetAsync() { InitialisePage(); loggedInUser = await _userManager.GetUserAsync(HttpContext.User); if (loggedInUser == null || loggedInUser.SenderId == null) { return(RedirectToPage("/Account/Logout", new { area = "Identity" })); } var senderTypesDetails = _helperService.GetSenderType(loggedInUser.SenderId); var AgentId = !CustomExtensions.NotNullOrEmpty(Input.AgentSenderId) && senderTypesDetails.IsAgent == true ? loggedInUser.SenderId : Input.AgentSenderId; var LineId = !CustomExtensions.NotNullOrEmpty(Input.LineSenderId) && senderTypesDetails.IsLine == true ? loggedInUser.SenderId : Input.LineSenderId; if (LineId != null) { Input.LineSenderId = _context.ContactDetails.Where(s => s.SenderId == LineId).Select ( s => s.SenderId.ToString() + " - " + s.CompanyName.ToString()).SingleOrDefault(); } if (AgentId != null) { Input.AgentSenderId = _context.ContactDetails.Where(s => s.SenderId == AgentId).Select ( s => s.SenderId.ToString() + " - " + s.CompanyName.ToString()).SingleOrDefault(); } if (CustomExtensions.NotNullOrEmpty(TempData) && TempData[MSD1Key] != null) { MSD1 = new MSD1(TempData.GetKeep <MSD1>(MSD1Key)); if (CustomExtensions.NotNullOrEmpty(MSD1.AgentSenderID) || CustomExtensions.NotNullOrEmpty(MSD1.LineSenderID)) { Input.AgentSenderId = MSD1.AgentSenderID + " - " + MSD1.AgentCompanyName; Input.LineSenderId = MSD1.LineSenderID + " - " + MSD1.LineCompanyName; } } FromSummary = Helpers.ReturnBoolFromQueryString(HttpContext, "FromSummary"); return(Page()); }
private void InitialisePage(PortFreightUser user) { Input.SenderType = _context.SenderType .Where(x => x.SenderId == user.SenderId) .FirstOrDefault().IsPort; UkPorts = _helperService.GetRespondentPorts(); RespondentVM = new RespondentViewModel(); var existingPort = FindSavedPort(user); if (existingPort != null) { AssignDataToInput(existingPort); } }
public async Task OnPostRemoveAgent(Guid?Id) { ModelState.Clear(); LoggedInUser = await _userManager.GetUserAsync(HttpContext.User); if (Id != null && Id != Guid.Empty) { var localMSD3 = CustomExtensions.NotNullOrEmpty(TempData) && TempData[MSD3Key] != null ? new MSD3ViewModel(TempData.GetKeep <MSD3ViewModel>(MSD3Key)) : new MSD3ViewModel();; var agentItem = localMSD3.AgentSummary.Where(x => x.Id == Id).SingleOrDefault(); localMSD3.AgentSummary.Remove(agentItem); TempData.Put(MSD3Key, localMSD3); } InitialisePage(LoggedInUser); MSD3VM = CustomExtensions.NotNullOrEmpty(TempData) && TempData[MSD3Key] != null ? new MSD3ViewModel(TempData.GetKeep <MSD3ViewModel>(MSD3Key)) : new MSD3ViewModel(); }
public void mapInputsToMSDI(PortFreightUser user) { msd1 = TempData.GetKeep <Msd1Data>("Msd1"); msd1.Imo = Imo; msd1.ShipName = ShipName; msd1.Year = Year; msd1.Quarter = Quarter; msd1.NumVoyages = NumVoyages; msd1.ReportingPort = ReportingPort; msd1.AssociatedPort = AssociatedPort; msd1.LastUpdatedBy = user.Email; msd1.ModifiedDate = DateTime.Now; msd1.IsInbound = IsInbound; }
public IActionResult OnPostResendEmail(string callback) { try { _emailSender.SendEmail(Input.Email, "Confirm your email", callback); var user = new PortFreightUser { Email = Input.Email }; TempData.Put("PreApprovedUser", user); return(RedirectToPage("./RegisterConfirmation")); } catch { return(Page()); } }
private void GetSubmittedQuarters(string port, PortFreightUser user) { port = port ?? ReportingPorts[ReportingPorts.Count - 1].Value; if (port.Any()) { AgentQuarters = _context.Msd3 .Where(p => p.ReportingPort == port && p.SenderId == user.SenderId && (p.Year == DateTime.Now.Year || p.Year == DateTime.Now.AddYears(-1).Year)) .Select(x => new AgentQuarterViewModel { ReportingPort = x.ReportingPort, Year = x.Year, Quarter = x.Quarter }) .ToList(); CargoQuarters = _context.Msd2 .Where(p => p.ReportingPort == port && p.SenderId == user.SenderId && (p.Year == DateTime.Now.Year || p.Year == DateTime.Now.AddYears(-1).Year)) .Select(x => new CargoQuarterViewModel { ReportingPort = x.ReportingPort, Year = x.Year, Quarter = x.Quarter }) .ToList(); } var locodes = (from p in _context.SenderIdPort join t in _context.SenderType on p.SenderId equals t.SenderId where (t.IsPort == true) && p.SenderId == user.SenderId select p.Locode); IOrderedQueryable <GlobalPort> ports = _context.GlobalPort.AsNoTracking().Where(x => locodes.Contains(x.Locode)).OrderByDescending(o => o.Locode); ReportingPorts = ports.Select(n => new SelectListItem { Value = n.Locode, Text = n.PortName, }).ToList(); ReportingPorts.ForEach(x => { x.Selected = x.Value == port; }); }
public async Task OnGet_GoodTempData_GoodContext_ReturnsResult() { var portFreightUser = new PortFreightUser { Id = "1", Email = "*****@*****.**", SenderId = "DFT007" }; actualUserContext.Users.Add(portFreightUser); await actualUserContext.SaveChangesAsync(); var senderType = new List <SenderType>() { new SenderType { SenderId = "DFT007", IsAgent = true, IsLine = false, IsPort = true } }; actualContext.SenderType.AddRange(senderType); await actualContext.SaveChangesAsync(); MSD1 Msd1 = new MSD1(); tempData["MSD1Key"] = JsonConvert.SerializeObject(Msd1); pageModel = new CompanyDetailsModel(actualContext, CommonFunction, mockUserManager.Object) { PageContext = pageContext, TempData = tempData, Url = new UrlHelper(actionContext) }; mockUserManager.Setup(p => p.GetUserAsync(httpContext.User)).ReturnsAsync(portFreightUsers.FirstOrDefault(x => x.Id == "1")); var result = await pageModel.OnGetAsync(); Assert.IsNotNull(result); Assert.IsNotNull(pageModel.AgentSenders); Assert.IsNotNull(pageModel.LineSenders); Assert.IsNotNull(pageModel.Input.AgentSenderId); Assert.IsNull(pageModel.Input.LineSenderId == "" ? null : pageModel.Input.LineSenderId); Assert.IsNotNull(pageModel.User); Assert.AreEqual(pageModel.loggedInUser.Email, portFreightUser.Email); }
public void mapInputsToMSD2(PortFreightUser user) { msd2 = TempData.GetKeep <Msd2>("Msd2"); msd2.Id = Id; msd2.SenderId = SenderId; msd2.CreatedDate = CreatedDate; msd2.ReportingPort = ReportingPort; msd2.Year = Year; msd2.Quarter = Quarter; msd2.GrossWeightInward = GrossWeightInward; msd2.TotalUnitsInward = TotalUnitsInward; msd2.PassengerVehiclesInward = PassengerVehiclesInward; msd2.GrossWeightOutward = GrossWeightOutward; msd2.TotalUnitsOutward = TotalUnitsOutward; msd2.PassengerVehiclesOutward = PassengerVehiclesOutward; msd2.LastUpdatedBy = user.Email; }
public void OnPostAsync_WhenUserIsNotinPreApprovedUserList_ShowInvitationErroMsg() { var preApprovedUser = new PreApprovedUser { EmailAddress = "*****@*****.**", SenderId = "Test1234" }; _usercontext.PreApprovedUsers.Add(preApprovedUser); var portFreightUser = new PortFreightUser { Email = "*****@*****.**", SenderId = "Test1234", EmailConfirmed = true }; _usercontext.Users.Add(portFreightUser); _usercontext.SaveChangesAsync(); var org = new OrgList { OrgId = "TST001", SubmitsMsd1 = false, SubmitsMsd2 = true }; _portfreightContext.OrgList.Add(org); _portfreightContext.SaveChangesAsync(); pageModel.Input = new PreRegisterModel.InputModel { Email = "*****@*****.**", SenderId = "Test1234" }; var result = (PageResult)pageModel.OnPost(); Assert.IsNotNull(result); Assert.IsFalse(viewData.ModelState.IsValid); Assert.AreEqual(1, viewData.ModelState.Count); Assert.IsTrue(viewData.ModelState.ContainsKey("Input.SenderId")); Assert.IsTrue(viewData.ModelState.ErrorCount == 1); Assert.AreEqual("This Sender ID has already been registered. Ask your colleague to send you an invitation or contact helpdesk", viewData.ModelState["Input.SenderId"].Errors[0].ErrorMessage); Assert.IsInstanceOfType(result, typeof(PageResult)); }
private void InitialisePage(PortFreightUser user, string port) { if (port == null) { var locodes = (from p in _context.SenderIdPort join t in _context.SenderType on p.SenderId equals t.SenderId where (t.IsPort == true) && p.SenderId == user.SenderId select p.Locode); IOrderedQueryable <GlobalPort> ports = _context.GlobalPort.AsNoTracking().Where(x => locodes.Contains(x.Locode)).OrderByDescending(o => o.Locode); ReportingPorts = ports.Select(n => new SelectListItem { Value = n.Locode, Text = n.PortName, Selected = true }).ToList(); } port = port ?? ReportingPorts[ReportingPorts.Count - 1].Value; GetSubmittedQuarters(port, user); }
public async Task OnPost_ModelStateInvalid_ReturnsPageResult() { var portFreightUser = new PortFreightUser { Id = "1", Email = "*****@*****.**", SenderId = "DFT007" }; actualUserContext.Users.Add(portFreightUser); await actualUserContext.SaveChangesAsync(); var senderType = new List <SenderType>() { new SenderType { SenderId = "DFT007", IsAgent = true, IsLine = false, IsPort = true } }; actualContext.SenderType.AddRange(senderType); actualContext.SaveChanges(); MSD1 Msd1 = new MSD1(); tempData["MSD1Key"] = JsonConvert.SerializeObject(Msd1); pageModel = new CompanyDetailsModel(actualContext, CommonFunction, mockUserManager.Object) { PageContext = pageContext, TempData = tempData, Url = new UrlHelper(actionContext) }; mockUserManager.Setup(p => p.GetUserAsync(httpContext.User)).ReturnsAsync(portFreightUsers.FirstOrDefault(x => x.Id == "1")); pageModel.ModelState.AddModelError("LineSenderId", "Line's Sender Id is required."); var result = pageModel.OnPost(); Assert.IsNotNull(result); Assert.IsNull(pageModel.Input.LineSenderId == "" ? null : pageModel.Input.LineSenderId); Assert.IsInstanceOfType(result, typeof(PageResult)); }
public async Task OnInvite_WhenPassInvalidUser_ModelStateThrowsanError() { var user = new PortFreightUser() { UserName = "******", Email = "*****@*****.**", PasswordHash = "TestTest1!" }; var inputModel = new InviteColleagueModel.InputModel { Email = user.Email }; inviteColleagueModel.Input = inputModel; inviteColleagueModel.ModelState.AddModelError("Sender Id", "Sender Id is required."); var result = await inviteColleagueModel.OnPostAsync(); Assert.IsNotNull(result); Assert.IsInstanceOfType(result, typeof(PageResult)); }
public void OnPostAsync_WhenUserIsAlreadyRegisteredPortFreight_ShowErrorMsg() { pageModel.Input = new PreRegisterModel.InputModel { Email = "*****@*****.**", SenderId = "Test1234" }; var portFreightUser = new PortFreightUser { Email = "*****@*****.**", SenderId = "Test1234" }; _usercontext.Users.Add(portFreightUser); _usercontext.SaveChangesAsync(); var result = (PageResult)pageModel.OnPost(); Assert.IsNotNull(result); Assert.IsTrue(viewData.ModelState.ContainsKey("EmailAlreadyRegistered")); Assert.IsInstanceOfType(result, typeof(PageResult)); }
public void OnPostAsync_WhenIncorrectEmailRegistered_AllowNewUser() { var preApprovedUser = new PreApprovedUser { EmailAddress = "*****@*****.**", SenderId = "TST001" }; _usercontext.PreApprovedUsers.Add(preApprovedUser); var portFreightUser = new PortFreightUser { Email = "*****@*****.**", SenderId = "TST001", EmailConfirmed = false }; _usercontext.Users.Add(portFreightUser); _usercontext.SaveChangesAsync(); var org = new OrgList { OrgId = "TST001", SubmitsMsd1 = false, SubmitsMsd2 = true }; _portfreightContext.OrgList.Add(org); _portfreightContext.SaveChangesAsync(); pageModel.Input = new PreRegisterModel.InputModel { Email = "*****@*****.**", SenderId = "TST001" }; var result = (RedirectToPageResult)pageModel.OnPost(); Assert.IsNotNull(result); Assert.AreEqual("Register", result.PageName); Assert.IsInstanceOfType(result, typeof(RedirectToPageResult)); }
public async Task OnPostAddAgent() { ModelState.Clear(); LoggedInUser = await _userManager.GetUserAsync(HttpContext.User); if (Input.SenderId == null) { ModelState.AddModelError("Input.SenderId", "Enter a valid shipping agent"); } var localMSD3 = CustomExtensions.NotNullOrEmpty(TempData) && TempData[MSD3Key] != null ? new MSD3ViewModel(TempData.GetKeep <MSD3ViewModel>(MSD3Key)) : new MSD3ViewModel(); if (localMSD3.AgentSummary.Count > 0) { bool isAlreadyAdded = localMSD3.AgentSummary.Any(x => x.ShippingAgent == Input.SenderId); if (isAlreadyAdded) { ModelState.AddModelError("Input.SenderId", "Agent or line is already added"); } } if (!ModelState.IsValid) { InitialisePage(LoggedInUser); } else { AgentItem = new Agent { Id = Guid.NewGuid(), ShippingAgent = Input.SenderId }; localMSD3.AgentSummary.Add(AgentItem); TempData.Put(MSD3Key, localMSD3); Input.SenderId = ""; InitialisePage(LoggedInUser); } MSD3VM = CustomExtensions.NotNullOrEmpty(TempData) && TempData[MSD3Key] != null ? new MSD3ViewModel(TempData.GetKeep <MSD3ViewModel>(MSD3Key)) : new MSD3ViewModel(); }
public IActionResult OnPost() { if (ModelState.IsValid) { var user = new PreApprovedUser { EmailAddress = Input.Email, SenderId = Input.SenderId }; if (EmailIdRegistered(user)) { ModelState.AddModelError("EmailAlreadyRegistered", "This email is already registered"); return(Page()); } var isUserPreApproved = _usercontext.PreApprovedUsers.Any(x => x.EmailAddress == user.EmailAddress); if (isUserPreApproved) { if (DeatailsMatchPreApprovedList(user)) { var preApprovedUser = new PortFreightUser { UserName = Input.Email.ToLower(), Email = Input.Email.ToLower(), SenderId = Input.SenderId.ToUpper() }; TempData.Put("PreApprovedUser", preApprovedUser); return(RedirectToPage("Register")); } ModelState.AddModelError("CheckDetailsEntered", "Please check the details entered match those in your invitation email"); return(Page()); } ModelState.AddModelError("CheckDetailsEntered", "We are unable to validate your details, please contact helpdesk"); return(Page()); } return(Page()); }
public async Task <IActionResult> OnPostAsync() { LoggedInUser = await _userManager.GetUserAsync(HttpContext.User); MSD3VM = CustomExtensions.NotNullOrEmpty(TempData) && TempData[MSD3Key] != null ? new MSD3ViewModel(TempData.GetKeep <MSD3ViewModel>(MSD3Key)) : new MSD3ViewModel(); MSD23 = CustomExtensions.NotNullOrEmpty(TempData) && TempData[MSD23Key] != null ? new MSD23(TempData.GetKeep <MSD23>(MSD23Key)) : new MSD23(); if (MSD3VM.AgentSummary.Count < 1) { ModelState.AddModelError("Input.SenderId", "No shipping Line or Agents entered"); } msd3UniqueKey = _helperService.GetUniqueKey(); if (msd3UniqueKey == null) { ModelState.AddModelError("UniqueKeyError", "Failed to generate a unique Key"); } if (!ModelState.IsValid) { InitialisePage(LoggedInUser); return(Page()); } MSD3Data = new Msd3 { Id = msd3UniqueKey, SenderId = LoggedInUser.SenderId, ReportingPort = MSD23.Port, Year = MSD23.Year, Quarter = MSD23.Quarter, DataSourceId = (uint)DataSource.WEB, CreatedDate = DateTime.SpecifyKind(currentDateTime, DateTimeKind.Utc), ModifiedDate = DateTime.SpecifyKind(currentDateTime, DateTimeKind.Utc), CreatedBy = LoggedInUser.Email.ToString(), LastUpdatedBy = LoggedInUser.Email.ToString() }; var existingParent = FindSubmission(); if (existingParent != null) { msd3UniqueKey = existingParent.Id; MSD3Data.Id = existingParent.Id; MSD3Data.CreatedDate = existingParent.CreatedDate; MSD3Data.CreatedBy = existingParent.CreatedBy; _context.Entry(existingParent).CurrentValues.SetValues(MSD3Data); _context.Msd3agents.RemoveRange(existingParent.Msd3agents); foreach (Agent item in MSD3VM.AgentSummary) { Msd3agents agentSummary = new Msd3agents { Msd3Id = msd3UniqueKey, SenderId = item.ShippingAgent.Split('-').FirstOrDefault().TrimEnd() }; existingParent.Msd3agents.Add(agentSummary); } ; } else { foreach (Agent item in MSD3VM.AgentSummary) { Msd3agents agentSummary = new Msd3agents { Msd3Id = msd3UniqueKey, SenderId = item.ShippingAgent.Split('-').FirstOrDefault().TrimEnd() }; MSD3Data.Msd3agents.Add(agentSummary); } ; await _context.AddAsync(MSD3Data); } await _context.SaveChangesAsync(); TempData.Remove(MSD3Key); return(RedirectToPage("./Success")); }