示例#1
0
        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));
        }
示例#2
0
        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"));
        }