public async static Task <Dictionary <string, string> > GenerateInvitation(Guid employeeId) { Employee emp = await Employee.SelectByKey(employeeId); if (emp == null) { throw new Exception("The employee is not found!"); } var date = DateTime.Now; InvitationLetter letter = new InvitationLetter() { Id = Guid.NewGuid(), EmployeeId = employeeId, Date = date, DateExpired = date.AddDays(5) }; await letter.ApplyAsync(); var parameters = new Dictionary <string, string>(); parameters.Add("Name", emp.Name); parameters.Add("Email", emp.Email); parameters.Add("Id", emp.Id.ToString()); parameters.Add("Key", letter.Id.ToString()); return(parameters); }
private TryAsync <InvitationAcknowledgement> SendEmail(InvitationLetter letter) => async() => { var emialSender = _client.GetGrain <IEmailSender>(0); await emialSender.SendEmailAsync(letter.Letter); return(new InvitationAcknowledgement(Guid.NewGuid().ToString())); };
private TryAsync <AcknowledgementSent> SendEmail(InvitationLetter letter) => async() => { var emailSender = _client.GetGrain <IEmailSender>(0); await emailSender.SendEmailAsync(letter.Letter); return(new AcknowledgementSent(1, Guid.NewGuid(), letter)); };
private InvitationAcknowledgement SendEmailSynced(InvitationLetter letter) { var emailSender = _client.GetGrain <IEmailSender>(0); emailSender.SendEmailSync(letter.Letter); Task.WaitAll(); return(new InvitationAcknowledgement(Guid.NewGuid().ToString())); }
public async static Task Registration(Guid key, string domainLogin, string login, string password) { var invite = await InvitationLetter.SelectByKey(key); if (invite == null) { throw new Exception("The invitation key is incorrect!"); } if (invite.DateExpired < DateTime.Now) { throw new Exception("The invitation key is expired!"); } var employee = await Employee.SelectByKey(invite.EmployeeId); if (employee == null) { throw new Exception("The employee is not found!"); } var su = await SecurityUser.SelectByKey(invite.EmployeeId); if (su == null) { su = new SecurityUser() { Id = employee.Id, Name = employee.Name, Email = employee.Email }; await su.ApplyAsync(); } await CheckDefaultRole(employee.Id, "Users"); var credentials = await SecurityUser.GetCredentialByUserId(su.Id); var containerCredential = new ObservableEntityContainer(credentials.Select(c => c.AsDynamicEntity), SecurityCredential.Model); containerCredential.RemoveAll(); if (!string.IsNullOrEmpty(domainLogin)) { var domainCredential = new SecurityCredential() { Id = Guid.NewGuid(), SecurityUserId = su.Id, Login = domainLogin, AuthenticationType = 1 }; containerCredential.Merge(new List <dynamic>() { domainCredential.AsDynamicEntity }); } if (!string.IsNullOrEmpty(login) && !string.IsNullOrEmpty(password)) { var passwordSalt = HashHelper.GenerateSalt(); var passwordHash = HashHelper.GenerateStringHash(password, passwordSalt); var customCredential = new SecurityCredential() { Id = Guid.NewGuid(), SecurityUserId = su.Id, Login = login, PasswordHash = passwordHash, PasswordSalt = passwordSalt, AuthenticationType = 0 }; containerCredential.Merge(new List <dynamic>() { customCredential.AsDynamicEntity }); } await containerCredential.ApplyAsync(); await InvitationLetter.DeleteAsync(new Guid[] { key }); }