forked from ebhomengo/niki
65 lines
1.8 KiB
Go
65 lines
1.8 KiB
Go
package adminservice
|
|
|
|
import (
|
|
"context"
|
|
|
|
"git.gocasts.ir/ebhomengo/niki/entity"
|
|
adminserviceparam "git.gocasts.ir/ebhomengo/niki/param/admin/admin"
|
|
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
|
)
|
|
|
|
func (s Service) Register(ctx context.Context, req adminserviceparam.RegisterRequest) (adminserviceparam.RegisterResponse, error) {
|
|
const op = richerror.Op("adminservice.Register")
|
|
if fieldErrors, vErr := s.vld.ValidateRegisterRequest(ctx, req); vErr != nil {
|
|
return adminserviceparam.RegisterResponse{FieldErrors: fieldErrors}, richerror.New(op).WithErr(vErr)
|
|
}
|
|
|
|
var newAdmin entity.Admin
|
|
if req.FirstName != nil {
|
|
newAdmin.FirstName = *req.FirstName
|
|
}
|
|
if req.LastName != nil {
|
|
newAdmin.LastName = *req.LastName
|
|
}
|
|
if req.PhoneNumber != nil {
|
|
newAdmin.PhoneNumber = *req.PhoneNumber
|
|
}
|
|
if req.Role != nil {
|
|
newAdmin.Role = *req.Role
|
|
}
|
|
if req.Description != nil {
|
|
newAdmin.Description = *req.Description
|
|
}
|
|
if req.Email != nil {
|
|
newAdmin.Email = *req.Email
|
|
}
|
|
if req.Gender != nil {
|
|
newAdmin.Gender = *req.Gender
|
|
}
|
|
if req.Status != nil {
|
|
newAdmin.Status = *req.Status
|
|
}
|
|
|
|
if bErr := GenerateHash(req.Password); bErr != nil {
|
|
return adminserviceparam.RegisterResponse{}, richerror.New(op).WithErr(bErr).WithKind(richerror.KindUnexpected)
|
|
}
|
|
newAdmin.Password = *req.Password
|
|
|
|
admin, err := s.repo.AddAdmin(ctx, newAdmin)
|
|
if err != nil {
|
|
return adminserviceparam.RegisterResponse{}, richerror.New(op).WithErr(err).WithKind(richerror.KindUnexpected)
|
|
}
|
|
|
|
return adminserviceparam.RegisterResponse{Data: adminserviceparam.Data{
|
|
ID: admin.ID,
|
|
FirstName: admin.FirstName,
|
|
LastName: admin.LastName,
|
|
PhoneNumber: admin.PhoneNumber,
|
|
Role: admin.Role,
|
|
Description: admin.Description,
|
|
Email: admin.Email,
|
|
Gender: admin.Gender,
|
|
Status: admin.Status,
|
|
}}, err
|
|
}
|