public void Update(ref OrganizationVM vm, string userId) { var dbContext = new LMISEntities(); var portalUserId = vm.PortalUsersID; #region 1st: Update portal user var portalUser = dbContext.PortalUsers.Single(pu => pu.PortalUsersID == portalUserId); // portalUser.PortalUsersID = organizationVM.PortalUser.PortalUsersID; portalUser.IDType = vm.PortalUser.IDType; portalUser.IDNumber = vm.PortalUser.IDNumber; portalUser.UserCategory = vm.PortalUser.UserCategory; portalUser.UserSubCategory = vm.PortalUser.UserSubCategory; portalUser.TrainingProvider = vm.PortalUser.TrainingProvider; portalUser.Employer = vm.PortalUser.Employer; portalUser.JobSeeker = vm.PortalUser.JobSeeker; portalUser.TrainingSeeker = vm.PortalUser.TrainingSeeker; portalUser.Researcher = vm.PortalUser.Researcher; portalUser.Internal = vm.PortalUser.Internal; portalUser.IsSubscriper = vm.PortalUser.IsSubscriper; dbContext.Entry(portalUser).State = EntityState.Modified; dbContext.SaveChanges(); #endregion using (var transaction = dbContext.Database.BeginTransaction()) { #region 3rd: Populate Organization object var organizationObject = dbContext.OrganizationDetails.Single(org => org.PortalUsersID == portalUserId); PopulateRecord(ref organizationObject, vm, vm.PortalUsersID); organizationObject.UpdateDate = DateTime.UtcNow; organizationObject.UpdateUserID = userId; #endregion #region remove old translations var details = dbContext.OrganizationDetails_Det .Where(r => r.PortalUsersID == portalUserId) .ToList(); foreach (var row in details) { organizationObject.OrganizationDetails_Det.Remove(row); } dbContext.OrganizationDetails_Det.RemoveRange(details); //dbContext.SaveChanges(); #endregion #region 4th: Add translations foreach (var translation in vm.Translation.Where(t => t.OrganizationName != null || t.Address != null || t.OtherIndustryType != null)) { var translationObject = new OrganizationDetails_Det { PortalUsersID = portalUser.PortalUsersID, LanguageID = translation.LanguageID, OrganizationName = translation.OrganizationName, Address = translation.Address, OtherIndustryType = translation.OtherIndustryType }; organizationObject.OrganizationDetails_Det.Add(translationObject); } #endregion #region 6th: Save Organization object organizationObject.UpdateUserID = userId; organizationObject.UpdateDate = DateTime.UtcNow; dbContext.Entry(organizationObject).State = EntityState.Modified; dbContext.SaveChanges(); transaction.Commit(); #endregion } }
public void Post(ref OrganizationVM vm, string userId) { var dbContext = new LMISEntities(); #region 1st: Add portal user var portalUser = new PortalUser { PortalUsersID = vm.PortalUser.PortalUsersID, IDType = vm.PortalUser.IDType, IDNumber = vm.PortalUser.IDNumber, UserCategory = vm.PortalUser.UserCategory, UserSubCategory = vm.PortalUser.UserSubCategory, TrainingProvider = vm.PortalUser.TrainingProvider, Employer = vm.PortalUser.Employer, JobSeeker = vm.PortalUser.JobSeeker, TrainingSeeker = vm.PortalUser.TrainingSeeker, Researcher = vm.PortalUser.Researcher, Internal = vm.PortalUser.Internal, IsSubscriper = vm.PortalUser.IsSubscriper }; dbContext.PortalUsers.Add(portalUser); dbContext.SaveChanges(); #endregion #region 2nd: Add AspNetUser // var user = organizationVM.ContactPersons.FirstOrDefault().User; // AspNetUser aspNetUser = new AspNetUser // { // Id = Guid.NewGuid().ToString(), // Email = user.Email, // EmailConfirmed = false, // PasswordHash = user.PasswordHash, // SecurityStamp = user.SecurityStamp, // PhoneNumber = user.PhoneNumber, // PhoneNumberConfirmed = false, // TwoFactorEnabled = user.TwoFactorEnabled, // LockoutEnabled = false, // AccessFailedCount = 0, // UserName = user.Email // }; // dbContext.AspNetUsers.Add(aspNetUser); // dbContext.SaveChanges(); #endregion using (var transaction = dbContext.Database.BeginTransaction()) { #region 3rd: Populate Organization object var organizationObject = new OrganizationDetail(); PopulateRecord(ref organizationObject, vm, portalUser.PortalUsersID); organizationObject.PostDate = DateTime.UtcNow; organizationObject.PostUserID = userId; #endregion #region 4th: Add translations foreach (var translation in vm.Translation.Where(t => t.OrganizationName != null || t.Address != null || t.OtherIndustryType != null)) { OrganizationDetails_Det translationObject = new OrganizationDetails_Det { PortalUsersID = portalUser.PortalUsersID, LanguageID = translation.LanguageID, OrganizationName = translation.OrganizationName, Address = translation.Address, OtherIndustryType = translation.OtherIndustryType }; organizationObject.OrganizationDetails_Det.Add(translationObject); } #endregion #region 5th: Add Contact persons foreach (var person in vm.ContactPersons) { var contactPerson = new OrganizationContact_Info { OrganizationContactID = person.OrganizationContactID, PortalUsersID = portalUser.PortalUsersID, JobTitleID = person.JobTitleID, Telephone = person.Telephone, Mobile = person.Mobile, Fax = person.Fax, Email = person.Email, AuthorizationletterPath = person.AuthorizationletterPath, IsApproved = person.IsApproved, RejectReason = person.RejectReason, IsDeleted = person.IsDeleted, DeleteReason = person.DeleteReason, PostDate = DateTime.Now, PostUSerID = userId, UserID = userId, }; organizationObject.OrganizationContact_Info.Add(contactPerson); #region 6th: Add translations to contact person foreach (var translation in person.Translation.Where(t => t.ContactFullName != null && t.Department != null)) { var translationObject = new OrganizationContactInfoDetail { OrganizationContactID = contactPerson.OrganizationContactID, LanguageID = translation.LanguageID, ContactFullName = translation.ContactFullName, Department = translation.Department }; contactPerson.OrganizationContactInfoDetails.Add(translationObject); } #endregion } #endregion #region 6th: Save Organization object dbContext.OrganizationDetails.Add(organizationObject); dbContext.SaveChanges(); transaction.Commit(); #endregion } }