public async Task <ActionResult> CreateIndustrialSupervisor([FromForm] IndustrialSupervisorRequest industrialSupervisorRequest) { var result = await _industrialSupervisorRepository.CreateIndustrialSupervisor(industrialSupervisorRequest); if (result.StatusCode == Helpers.Success) { return(StatusCode(StatusCodes.Status200OK, result)); } else { return(StatusCode(StatusCodes.Status400BadRequest, result)); } }
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 }); }