public async Task <ActionResult> AddObservableAccountForObservableUser(ObservableAccountForObservableUserVM observablePage) { // Receive the observable user var observableUser = new ObservableUser(); observableUser = await _repository.GetAsync <ObservableUser>(x => x.Username == observablePage.observableUserName); // Checking the presence of the target content we want to add to the database in the database var page = await _repository.GetAsync <ObservableUser>(x => x.Username == observablePage.TargetContentName); if (page != null) { // If such content exists, check the existence of the observable user in the list of its ActivityInitiators if (observableUser != null && page.ActivityInitiators.Contains(observableUser)) { return(RedirectToAction("Index", new { status = "repeat" })); } else { /* If such observable user does not exist, add it to the collection of ActivityInitiators, * update the data in the database and return a message about the successful operation.*/ page.ActivityInitiators.Add(observableUser); await _repository.UpdateAsync <ObservableUser>(page); observableUser.ObservableUsers.Add(page); await _repository.UpdateAsync <ObservableUser>(observableUser); return(RedirectToAction("Index", new { status = "success" })); } } // If such content is not in the database, then we initialize the new content page = new ObservableUser(); page.InstagramPK = _instaApi.GetPrimaryKeyByUsername(observablePage.TargetContentName); page.Username = observablePage.TargetContentName; page.ActivityInitiators.Add(observableUser); // Trying to add a new content to the database if (!await _repository.CreateAsync <ObservableUser>(page)) { return(RedirectToAction("Index", new { status = "bad" })); } // Update the data in the database observableUser.ObservableUsers.Add(page); await _repository.UpdateAsync <ObservableUser>(observableUser); // Return a message about the successful operation return(RedirectToAction("Index", new { status = "success" })); }
public async Task <ActionResult> AddObservableAccountForObservableUser() { string instaPK = _instaApi.GetCurrentUserPrimaryKey(); var currentUser = await _repository.GetAsync <ApplicationUser>(x => x.InstagramPK == instaPK); var observablePage = new ObservableAccountForObservableUserVM(); foreach (var observableUser in currentUser.ObservableAccounts) { observablePage.ObservableUsers.Add(new SelectListItem { Text = observableUser.Username, Value = observableUser.Username }); } return(PartialView("_AddObservableAccountForObservableUser", observablePage)); }