示例#1
0
        public async Task <ToRespond> CreateSiwesAdmin(SiwesAdminRequest siwesAdminRequest)
        {
            if (siwesAdminRequest == null || string.IsNullOrWhiteSpace(siwesAdminRequest.EmailAddress))
            {
                return(new ToRespond()
                {
                    StatusCode = Helpers.ObjectNull,
                    StatusMessage = "Super Admin Information is Null"
                });
            }

            //GET SUPERADMIN ROLE
            var superAdminRole = await _roleManager.FindByNameAsync(Helpers.SiwesAdminRole);

            if (superAdminRole == null)
            {
                return(new ToRespond()
                {
                    StatusCode = Helpers.NotFound,
                    StatusMessage = "Super Admin Role is Not Found"
                });
            }

            var siwesAdminRoleForAssignment = new RoleResponse()
            {
                Id = superAdminRole.Id
            };

            if (await SiwesAdminExists(siwesAdminRequest.EmailAddress))
            {
                return(new ToRespond()
                {
                    StatusCode = Helpers.ObjectExists,
                    StatusMessage = "One or more of the provided resources already exist(s)!"
                });
            }

            var siwesAdmin = new SiwesAdmin
            {
                EmailAddress = siwesAdminRequest.EmailAddress,
                FirstName    = siwesAdminRequest.FirstName,
                LastName     = siwesAdminRequest.LastName,
            };

            _globalRepository.Add(siwesAdmin);
            var saveResult = await _globalRepository.SaveAll();

            if (saveResult.HasValue)
            {
                if (!saveResult.Value)
                {
                    return(new ToRespond()
                    {
                        StatusCode = Helpers.SaveNoRowAffected,
                        StatusMessage = "SuperAdmin Information Could Not Save"
                    });
                }

                var user = new User
                {
                    UserName   = siwesAdmin.EmailAddress,
                    Email      = siwesAdmin.EmailAddress,
                    UserTypeId = siwesAdmin.SiwesAdminId,
                    UserType   = Helpers.SiwesAdmin,
                };
                var result = _userManager.CreateAsync(user, siwesAdminRequest.Password).Result;
                if (result.Succeeded)
                {
                    siwesAdmin.UserId = user.Id;
                    var siwesAdminUpdateResult = _globalRepository.Update(siwesAdmin);
                    if (!siwesAdminUpdateResult)
                    {
                        return(new ToRespond()
                        {
                            StatusCode = Helpers.NotSucceeded,
                            StatusMessage = "Error Occured while saving Staff Information"
                        });
                    }

                    var siwesAdminUpdateSaveResult = await _globalRepository.SaveAll();

                    if (!siwesAdminUpdateSaveResult.HasValue)
                    {
                        return(new ToRespond()
                        {
                            StatusCode = Helpers.SaveError,
                            StatusMessage = "Error Occured while saving Super Admin Information"
                        });
                    }

                    if (!siwesAdminUpdateSaveResult.Value)
                    {
                        return(new ToRespond()
                        {
                            StatusCode = Helpers.SaveNoRowAffected,
                            StatusMessage = "Error Occured while saving Super Admin Information"
                        });
                    }

                    //IF NO ROLE CAME WITH THE SUPERADMIN REGISTER REQUEST ASSIGN DEFAULT ROLE OF SUPERADMIN TO THAT USER
                    var userRole = new List <RoleResponse>()
                    {
                        siwesAdminRoleForAssignment
                    };

                    var assignmentResult = await _roleRepository.AssignRolesToUser(new RoleUserAssignmentRequest()
                    {
                        Users = new List <UserToReturn>()
                        {
                            new UserToReturn()
                            {
                                Id = user.Id
                            }
                        },
                        Roles = userRole
                    });

                    if (assignmentResult.StatusCode == Helpers.Success)
                    {
                        var userTokenVal = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                        string hashedEmail           = GetHashedEmail(user.Email);
                        string fullToken             = userTokenVal + "#" + hashedEmail;
                        var    emailVerificationLink = _authenticationRepository.GetUserEmailVerificationLink(fullToken);
                        if (emailVerificationLink == null)
                        {
                            return(new ToRespond()
                            {
                                StatusCode = Helpers.ObjectNull,
                                StatusMessage = "Could not generate Email Verification Link"
                            });
                        }
                        else
                        {
                            var siwesAdminToReturn = await GetOneSiwesAdmin(siwesAdmin.SiwesAdminId);

                            return(new ToRespond()
                            {
                                StatusCode = Helpers.Success,
                                ObjectValue = (User)siwesAdminToReturn.ObjectValue,
                                StatusMessage = "SuperAdmin Created Successfully!!!"
                            });
                        }
                    }
                    else
                    {
                        return(new ToRespond()
                        {
                            StatusCode = Helpers.NotSucceeded,
                            StatusMessage = "Error Occured while saving SuperAdmin Information"
                        });
                    }
                }
                else
                {
                    return(new ToRespond()
                    {
                        StatusCode = Helpers.NotSucceeded,
                        StatusMessage = "Error Occured while saving SuperAdmin Information"
                    });
                }
            }
            else
            {
                return(new ToRespond()
                {
                    StatusCode = Helpers.SaveError,
                    StatusMessage = "Error Occured while saving SuperAdmin Information"
                });
            }
        }
示例#2
0
        public async Task <ToRespond> CreateIndustrialSupervisor(IndustrialSupervisorRequest industrialSupervisorRequest)
        {
            if (industrialSupervisorRequest == null)
            {
                return(new ToRespond()
                {
                    StatusCode = Helpers.ObjectNull,
                    StatusMessage = Helpers.StatusMessageObjectNull
                });
            }

            if (await IndustrialSupervisorExists(industrialSupervisorRequest.EmailAddress))
            {
                return(new ToRespond()
                {
                    StatusCode = Helpers.ObjectExists,
                    StatusMessage = Helpers.StatusMessageObjectExists
                });
            }

            var industrialSupervisor = new IndustrialSupervisor
            {
                EmailAddress   = industrialSupervisorRequest.EmailAddress,
                FirstName      = industrialSupervisorRequest.FirstName,
                LastName       = industrialSupervisorRequest.LastName,
                PhoneNumber    = industrialSupervisorRequest.PhoneNumber,
                CompanyAddress = industrialSupervisorRequest.CompanyAddress,
                CompanyName    = industrialSupervisorRequest.CompanyName,
                SectionOfWork  = industrialSupervisorRequest.SectionOfWork
            };

            if (industrialSupervisorRequest.PictureUrl != null)
            {
                var result = _cloudinaryRepository.UploadFileToCloudinary(industrialSupervisorRequest.PictureUrl);
                var image  = (RawUploadResult)result.ObjectValue;
                industrialSupervisor.PictureUrl = image.Uri.ToString();
            }

            var dbTransaction = await _dataContext.Database.BeginTransactionAsync();

            _globalRepository.Add(industrialSupervisor);
            var saveVal = await _globalRepository.SaveAll();

            if (saveVal != null)
            {
                if (!saveVal.Value)
                {
                    return(new ToRespond()
                    {
                        StatusCode = Helpers.SaveNoRowAffected,
                        StatusMessage = "Can Not Save"
                    });
                }
                var user = new User
                {
                    UserName   = industrialSupervisorRequest.EmailAddress,
                    Email      = industrialSupervisorRequest.EmailAddress,
                    UserTypeId = industrialSupervisor.IndustrialSupervisorId,
                    UserType   = Helpers.Student
                };

                var password = (new Generate()).RandomPassword();

                var result = await _userManager.CreateAsync(user, password);

                if (result.Succeeded)
                {
                    //ASSIGN STUDENT ROLE TO USER (Student)
                    string IndustrialSupervisorTypeRole = Helpers.IndustrialSupervisorRole;


                    var assignmentResult = await _userManager.AddToRoleAsync(user, IndustrialSupervisorTypeRole);

                    if (assignmentResult.Succeeded)
                    {
                        //THEN UPDATE Student TABLE USERID COLUMN WITH NEWLY CREATED USER ID
                        industrialSupervisor.UserId = user.Id;
                        var IndustrialSupervisorUpdateResult = _globalRepository.Update(industrialSupervisor);
                        if (!IndustrialSupervisorUpdateResult)
                        {
                            return(new ToRespond()
                            {
                                StatusCode = Helpers.NotSucceeded,
                                StatusMessage = "Not Suceeded"
                            });
                        }

                        var IndustrialSupervisorUpdateSaveResult = await _globalRepository.SaveAll();

                        if (!IndustrialSupervisorUpdateSaveResult.HasValue)
                        {
                            return(new ToRespond()
                            {
                                StatusCode = Helpers.SaveError,
                                StatusMessage = Helpers.StatusMessageSaveError
                            });
                        }

                        if (!IndustrialSupervisorUpdateSaveResult.Value)
                        {
                            return(new ToRespond()
                            {
                                StatusCode = Helpers.SaveNoRowAffected,
                                StatusMessage = "Can not save Row affected"
                            });
                        }

                        //SEND MAIL TO Student TO CONFIRM EMAIL
                        var userTokenVal = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                        string hashedEmail = GetHashedEmail(user.Email);

                        /*var shortToken = userTokenVal.Substring(0, 7);
                         * user.ShortToken = shortToken;
                         * user.LongToken = userTokenVal;
                         * _ = _globalRepository.SaveAll();*/
                        var fullToken = userTokenVal + "#" + hashedEmail;

                        var emailVerificationLink = _authenticationRepository.GetUserEmailVerificationLink(fullToken);
                        if (emailVerificationLink == null)
                        {
                            return(new ToRespond()
                            {
                                StatusCode = Helpers.ObjectNull,
                                StatusMessage = "Email Verification Link Generation Error"
                            });
                        }
                        else
                        {
                            await dbTransaction.CommitAsync();

                            return(new ToRespond()
                            {
                                StatusCode = Helpers.Success,
                                ObjectValue = _mapper.Map <IndustrialSupervisorResponse>(industrialSupervisor),
                                StatusMessage = "Student Created Successfully!!!"
                            });
                        }
                    }
                }

                return(new ToRespond()
                {
                    StatusCode = Helpers.NotSucceeded,
                    StatusMessage = "Can not Suceed"
                });
            }

            return(new ToRespond()
            {
                StatusCode = Helpers.SaveError,
                StatusMessage = Helpers.StatusMessageSaveError
            });
        }
示例#3
0
        public async Task <ToRespond> CreateLecturer(LecturerRequest lecturerRequest)
        {
            if (lecturerRequest == null)
            {
                return(new ToRespond()
                {
                    StatusCode = Helpers.ObjectNull,
                    StatusMessage = Helpers.StatusMessageObjectNull
                });
            }

            if (await LecturerExists(lecturerRequest.EmailAddress))
            {
                return(new ToRespond()
                {
                    StatusCode = Helpers.ObjectExists,
                    StatusMessage = Helpers.StatusMessageObjectExists
                });
            }

            var lecturer = new Lecturer
            {
                EmailAddress = lecturerRequest.EmailAddress,
                FirstName    = lecturerRequest.FirstName,
                LastName     = lecturerRequest.LastName,
                PhoneNumber  = lecturerRequest.PhoneNumber,
                Department   = lecturerRequest.Department,
            };

            if (lecturerRequest.PictureUrl != null)
            {
                var result = _cloudinaryRepository.UploadFileToCloudinary(lecturerRequest.PictureUrl);
                var image  = (RawUploadResult)result.ObjectValue;
                lecturer.PictureUrl = image.Uri.ToString();
            }

            var dbTransaction = await _dataContext.Database.BeginTransactionAsync();

            _globalRepository.Add(lecturer);
            var saveVal = await _globalRepository.SaveAll();

            if (saveVal != null)
            {
                if (!saveVal.Value)
                {
                    return(new ToRespond()
                    {
                        StatusCode = Helpers.SaveNoRowAffected,
                        StatusMessage = "Can Not Save"
                    });
                }
                var user = new User
                {
                    UserName   = lecturerRequest.EmailAddress,
                    Email      = lecturerRequest.EmailAddress,
                    UserTypeId = lecturer.LecturerId,
                    UserType   = Helpers.Student
                };

                var password = (new Generate()).RandomPassword();

                var result = await _userManager.CreateAsync(user, password);

                if (result.Succeeded)
                {
                    //ASSIGN STUDENT ROLE TO USER (Student)
                    string LecturerTypeRole = Helpers.LecturerRole;


                    var assignmentResult = await _userManager.AddToRoleAsync(user, LecturerTypeRole);

                    if (assignmentResult.Succeeded)
                    {
                        //THEN UPDATE Student TABLE USERID COLUMN WITH NEWLY CREATED USER ID
                        lecturer.UserId = user.Id;
                        var LecturerUpdateResult = _globalRepository.Update(lecturer);
                        if (!LecturerUpdateResult)
                        {
                            return(new ToRespond()
                            {
                                StatusCode = Helpers.NotSucceeded,
                                StatusMessage = "Not Suceeded"
                            });
                        }

                        var LecturerUpdateSaveResult = await _globalRepository.SaveAll();

                        if (!LecturerUpdateSaveResult.HasValue)
                        {
                            return(new ToRespond()
                            {
                                StatusCode = Helpers.SaveError,
                                StatusMessage = Helpers.StatusMessageSaveError
                            });
                        }

                        if (!LecturerUpdateSaveResult.Value)
                        {
                            return(new ToRespond()
                            {
                                StatusCode = Helpers.SaveNoRowAffected,
                                StatusMessage = "Can not save Row affected"
                            });
                        }

                        var userTokenVal = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                        string hashedEmail = GetHashedEmail(user.Email);

                        var fullToken = userTokenVal + "#" + hashedEmail;

                        var emailVerificationLink = _authenticationRepository.GetUserEmailVerificationLink(fullToken);
                        if (emailVerificationLink == null)
                        {
                            return(new ToRespond()
                            {
                                StatusCode = Helpers.ObjectNull,
                                StatusMessage = "Email Verification Link Generation Error"
                            });
                        }
                        else
                        {
                            await dbTransaction.CommitAsync();

                            return(new ToRespond()
                            {
                                StatusCode = Helpers.Success,
                                ObjectValue = _mapper.Map <LecturerResponse>(lecturer),
                                StatusMessage = "Lecturer Created Successfully!!!"
                            });
                        }
                    }
                }

                return(new ToRespond()
                {
                    StatusCode = Helpers.NotSucceeded,
                    StatusMessage = "Can not Suceed"
                });
            }

            return(new ToRespond()
            {
                StatusCode = Helpers.SaveError,
                StatusMessage = Helpers.StatusMessageSaveError
            });
        }