diff --git a/server/router/selfregisterroute/controller.go b/server/router/selfregisterroute/controller.go index 51f2b53..b344496 100644 --- a/server/router/selfregisterroute/controller.go +++ b/server/router/selfregisterroute/controller.go @@ -2,6 +2,7 @@ package selfregisterroute import ( "fmt" + "strings" "sync" b64 "encoding/base64" @@ -22,6 +23,10 @@ const ( notificationSmsBody = "You have registered as a Visit Reporter for CHM NEMT. Login: https://portal.bcbsinstitute.com Reset PW: https://portal.bcbsinstitute.com/forgot" ) +const ( + phoneNumberMaxLength = 12 +) + var ( instance *controller once sync.Once @@ -44,12 +49,34 @@ func controllerInstance(svc *applicationservice.Service, cfg *config.Config) *co return instance } +func removeNonNumberChars(input string) string { + result := "" + for _, char := range input { + if char >= '0' && char <= '9' { + result += string(char) + } + } + + return result +} + func (c *controller) handle(ctx echo.Context) error { var user viewmodel.User if err := ctx.Bind(&user); err != nil { return routeutils.HandleAPIError(ctx, err) } + //format phone number - max length in database is 12 chars + formatedPhoneNumber := strings.TrimSpace(*user.PhoneNumber) + formatedPhoneNumber = strings.Replace(formatedPhoneNumber, "+1", "", -1) + formatedPhoneNumber = removeNonNumberChars(formatedPhoneNumber) + + if len(formatedPhoneNumber) > phoneNumberMaxLength { + formatedPhoneNumber = formatedPhoneNumber[:phoneNumberMaxLength] + } + + *user.PhoneNumber = formatedPhoneNumber + authUser, err := c.svc.Users.GetByUUID("573c70ff-733d-11e7-ba8f-0a6ad3fcdeaa", "") if err != nil { return routeutils.HandleAPIError(ctx, err) @@ -132,10 +159,14 @@ func (c *controller) handle(ctx echo.Context) error { notification, err = c.svc.Notification.SendNotificationWithoutWritingToDatabase(notification) if err != nil { - return routeutils.HandleAPIError(ctx, err) + logger := ctx.Logger() + logger.Warnf("Application Error: Could not send email notification to user email : %s", *user.Email) } //Send sms notification to Authorized user + + formatedPhoneNumber = *user.PhoneNumber + notification = viewmodel.Notification{ Type: applicationservice.NOtificationTypeSMS, To: *user.PhoneNumber, @@ -144,7 +175,8 @@ func (c *controller) handle(ctx echo.Context) error { notification, err = c.svc.Notification.SendNotificationWithoutWritingToDatabase(notification) if err != nil { - return routeutils.HandleAPIError(ctx, err) + logger := ctx.Logger() + logger.Warnf("Application Error: Could not send sms notification to user mobile : %s", *user.PhoneNumber) } return routeutils.ResponseAPIOK(ctx, user)