/// <summary> /// /// </summary> /// <param name="jsonPasswordChangeRequest"></param> /// <returns></returns> private HttpResponseMessage SubmitEmailSoftwarePlatform(JsonSubmitEmailRequest jsonPasswordChangeRequest) { string tenant = jsonPasswordChangeRequest.Tenant; string email = jsonPasswordChangeRequest.Email; if (string.IsNullOrEmpty(email)) { return(new HttpResponseMessage <string>("We can't find a user that links this email address, or the user account has expired or has been disabled. Please contact your administrator.", HttpStatusCode.BadRequest)); } if (string.IsNullOrEmpty(tenant)) { return(new HttpResponseMessage <string>("The tenant is invalid", HttpStatusCode.BadRequest)); } try { using (new TenantAdministratorContext(tenant)) { //get account by email // Create query var type = new EntityRef("core", "userAccount"); var query = new EDC.ReadiNow.Metadata.Query.Structured.StructuredQuery { RootEntity = new EDC.ReadiNow.Metadata.Query.Structured.ResourceEntity(type) }; var accountHolderEntity = new EDC.ReadiNow.Metadata.Query.Structured.RelatedResource(new EntityRef("core:accountHolder"), ReadiNow.Metadata.RelationshipDirection.Reverse); query.RootEntity.RelatedEntities.Add(accountHolderEntity); query.Conditions.Add(new EDC.ReadiNow.Metadata.Query.Structured.QueryCondition { Expression = new EDC.ReadiNow.Metadata.Query.Structured.ResourceDataColumn(accountHolderEntity, new EntityRef("core:name")), Operator = EDC.ReadiNow.Metadata.Query.Structured.ConditionType.IsNotNull }); query.Conditions.Add(new EDC.ReadiNow.Metadata.Query.Structured.QueryCondition { Expression = new EDC.ReadiNow.Metadata.Query.Structured.ResourceDataColumn(accountHolderEntity, new EntityRef("shared:businessEmail")), Operator = EDC.ReadiNow.Metadata.Query.Structured.ConditionType.Equal, Argument = new EDC.ReadiNow.Metadata.TypedValue(email) }); // Get results IEnumerable <UserAccount> entities = ReadiNow.Model.Entity.GetMatches <UserAccount>(query); if (entities == null || entities.Count() == 0) { return(new HttpResponseMessage <string>("We can't find a user that links this email address, or the user account has expired or has been disabled. Please contact your administrator.", HttpStatusCode.NotFound)); } bool success = false; bool disabledAccount = true; //as required from task 27183, if multiple user accounts are associated with one account holder, then each account will be received email foreach (UserAccount account in entities) { if (account.AccountStatus_Enum != UserAccountStatusEnum_Enumeration.Expired && account.AccountStatus_Enum != UserAccountStatusEnum_Enumeration.Disabled) { success = SendEmail(account, email, tenant); disabledAccount = false; } } //account.Id if (success == true && disabledAccount == false) { return(new HttpResponseMessage(HttpStatusCode.OK)); } else if (disabledAccount == true) { return(new HttpResponseMessage <string>("Your account has expired or has been disabled. Please contact your administrator", HttpStatusCode.BadRequest)); } else { return(new HttpResponseMessage <string>("There is an error to send reset password email. Please contact your administrator", HttpStatusCode.BadRequest)); } } } catch (EntityNotFoundException tenantEx) { string errorMessage = tenantEx.InnerException != null ? tenantEx.InnerException.Message : tenantEx.Message; EventLog.Application.WriteError("Submit Forget Password Email: Unhandled internal Entity Not Found Exception: " + errorMessage); return(new HttpResponseMessage <string>(errorMessage, HttpStatusCode.BadRequest)); } catch (Exception otherEx) { EventLog.Application.WriteError("Submit Forget Password Email: Unhandled internal Exception: " + otherEx.Message); return(new HttpResponseMessage <string>(otherEx.Message, HttpStatusCode.BadRequest)); } }
public HttpResponseMessage SubmitEmailSoftwarePlatform_Post([FromBody] JsonSubmitEmailRequest jsonSubmitEmailRequest) { return(SubmitEmailSoftwarePlatform(jsonSubmitEmailRequest)); }