public async Task <IActionResult> Index(string id) { var userrolelist = UserRoles.Find(FilterDefinition <UserRoles> .Empty).ToList(); StaffUsers staffUsers = new StaffUsers(); TempData["isss"] = id; staffUsers.UserRoles = userrolelist; return(View(staffUsers)); }
public async Task <IActionResult> Index(StaffUsers staff) { try { //get the current issuer id var userid = User.Claims.FirstOrDefault(c => c.Type == AppUtility.UserId).Value; // Create object of staffUsers model StaffUsers staffUsers = new StaffUsers(); staff.Users.IsUserVerified = true; staff.Users.Password = AppUtility.Encrypt("Welcome@123"); staff.Users.CreatedDate = DateTime.Now; // find the issuer in the collection var issuerModel = collection.Find(e => e.UserId == new ObjectId(userid)).FirstOrDefault(); if (issuerModel != null) { staff.Users.CreatedBy = issuerModel.Name; } //check email of users already exists var IsemailExists = Users.Find(e => e.Email == staff.Users.Email).ToList(); if (IsemailExists.Count() > 0) { ModelState.AddModelError(string.Empty, "User with this email already exist"); var userrolelist = UserRoles.Find(FilterDefinition <UserRoles> .Empty).ToList(); StaffUsers staffUsers1 = new StaffUsers(); staffUsers1.UserRoles = userrolelist; return(View(staffUsers1)); } var useremail = Users.Find(e => e.Email == staff.Users.Email).FirstOrDefault(); if (useremail == null) { Users.InsertOne(staff.Users); // insert staff in user collection SolrUsersModel su = new SolrUsersModel(staff.Users); _solr.Add(su); _solr.Commit(); var staffid = Users.Find(e => e.UserId == staff.Users.UserId).FirstOrDefault(); //get the staffid in user collections string[] ids = new[] { staffid.UserId.ToString() }; Users[] staffobject = new[] { staff.Users }; //get the issuer in the issuer collection var issuerModelnew = collection.Find(e => e.UserId == new ObjectId(userid)).FirstOrDefault(); if (issuerModelnew.StaffsIds != null && issuerModelnew.Staffsobject != null) { collection.UpdateOneAsync(x => x.UserId == new MongoDB.Bson.ObjectId(userid), Builders <Issuers> .Update.PushEach(x => x.StaffsIds, ids)).ConfigureAwait(false); // push the staff id into the array of issuer staffids collection.UpdateOneAsync(x => x.UserId == new MongoDB.Bson.ObjectId(userid), Builders <Issuers> .Update.PushEach(x => x.Staffsobject, staffobject)).ConfigureAwait(false); } else { var filter = Builders <Issuers> .Filter.Eq("UserId", new ObjectId(userid)); var updateDef = Builders <Issuers> .Update. Set("StaffsIds", ids); updateDef = updateDef. Set("Staffsobject", staffobject); collection.UpdateOne(filter, updateDef); // update the staffids column } if (issuerModel.StaffsIds != null && issuerModel.Staffsobject != null) { string[] staffArr = new string[issuerModel.StaffsIds.Length + 1]; Users[] staffObjArr = new Models.Users[issuerModel.Staffsobject.Length + 1]; for (int i = 0; i <= issuerModel.StaffsIds.Length - 1; i++) { staffArr[i] = issuerModel.StaffsIds[i]; staffObjArr[i] = issuerModel.Staffsobject[i]; } staffArr[issuerModel.StaffsIds.Length] = ids[0]; staffObjArr[issuerModel.Staffsobject.Length] = staffobject[0]; issuerModel.StaffsIds = staffArr; issuerModel.Staffsobject = staffObjArr; } else { issuerModel.StaffsIds = ids; issuerModel.Staffsobject = staffobject; } issuerModelnew.UserId = new ObjectId(userid); // SolrIssuersModel sissuser = new SolrIssuersModel(issuerModelnew); // _solrIssuer.Add(sissuser); // _solrIssuer.Commit(); //send the email to the created staff await _emailSender.SendEmailAsync(staff.Users.Email, "Congratulation, you are invited as a staff", $"<h3 style = 'color:blueviolet' >Congratulation, you are invited.. for login</h3><div class='text-center'><a class='btn btn-secondary' href='http://digibadge.eastus.cloudapp.azure.com/Auth/Login'>Login your Account</a></div><br />" + $"" + $"<br/><h2>Your id - {staff.Users.Email}</h2><br/><h2>Your Password - {"Welcome@123"}</h2><br/></div><div class='col-3'></div></div>" ); } // email exists then push the staff id into the array else { var staffid = Users.Find(e => e.UserId == useremail.UserId).FirstOrDefault(); string[] ids = new[] { staffid.UserId.ToString() }; Users[] staffobject = new[] { staff.Users }; var issuerModel1 = collection.Find(e => e.UserId == new ObjectId(userid)).FirstOrDefault(); if (issuerModel1.StaffsIds != null) { collection.UpdateOneAsync(x => x.UserId == new MongoDB.Bson.ObjectId(userid), Builders <Issuers> .Update.PushEach(x => x.StaffsIds, ids)).ConfigureAwait(false); collection.UpdateOneAsync(x => x.UserId == new MongoDB.Bson.ObjectId(userid), Builders <Issuers> .Update.PushEach(x => x.Staffsobject, staffobject)).ConfigureAwait(false); } else { var filter = Builders <Issuers> .Filter.Eq("UserId", new ObjectId(userid)); var updateDef = Builders <Issuers> .Update. Set("StaffsIds", ids); updateDef = updateDef. Set("Staffsobject", staffobject); collection.UpdateOne(filter, updateDef); } /* SolrUsersModel su = new SolrUsersModel(staff.Users); * _solr.Add(su); * _solr.Commit();*/ if (issuerModel1.StaffsIds != null && issuerModel1.Staffsobject != null) { string[] staffArr = new string[issuerModel1.StaffsIds.Length + 1]; Users[] staffObjArr = new Models.Users[issuerModel1.Staffsobject.Length + 1]; for (int i = 0; i <= issuerModel1.StaffsIds.Length - 1; i++) { staffArr[i] = issuerModel1.StaffsIds[i]; staffObjArr[i] = issuerModel1.Staffsobject[i]; } staffArr[issuerModel1.StaffsIds.Length] = ids[0]; staffObjArr[issuerModel1.Staffsobject.Length] = staffobject[0]; issuerModel1.StaffsIds = staffArr; issuerModel1.Staffsobject = staffObjArr; } else { issuerModel1.StaffsIds = ids; issuerModel1.Staffsobject = staffobject; } issuerModel1.UserId = new ObjectId(userid); // SolrIssuersModel sissuser = new SolrIssuersModel(issuerModel1); //_solrIssuer.Add(sissuser); //_solrIssuer.Commit(); //send email to the created staff await _emailSender.SendEmailAsync(staff.Users.Email, "Congratulation, you are invited as a staff", $"<h3 style = 'color:blueviolet' >Congratulation, you are invited.. for login</h3><div class='text-center'><a class='btn btn-secondary' href='http://digibadge.eastus.cloudapp.azure.com/Auth/Login'>Login your Account</a></div><br />" + $"" + $"<br/><h2>Your id - ${staff.Users.Email}</h2><br/><h2>Your Password - ${"Welcome@123"}</h2><br/></div><div class='col-3'></div></div>" ); } } catch (Exception) { ModelState.AddModelError(string.Empty, "Please try again later."); return(View()); } return(RedirectToAction("ViewStaff")); }