Exemple #1
0
        public async Task <UserValidationStatus> ValidateCreateDuplicate(StaffMemberCreateParameters parameters)
        {
            var findEmployeeEmail = await _dbContext.Staff.AnyAsync(c => c.Email.Contains(parameters.Email));

            var findEmployeeMobile = await _dbContext.Staff.AnyAsync(c => c.MobileNumber.Equals(parameters.MobileNumber));

            if (findEmployeeEmail)
            {
                return(UserValidationStatus.EmailAlreadyExists);
            }
            else if (findEmployeeMobile)
            {
                return(UserValidationStatus.MobileAlreadyExists);
            }
            else
            {
                return(UserValidationStatus.Success);
            }
        }
        public async Task <StaffMemberCreateResult> Create(StaffMemberCreateParameters parameters)
        {
            var validation = await _staffValidation.ValidateCreateDuplicate(parameters);

            if (validation != UserValidationStatus.Success)
            {
                return(null);
            }
            else
            {
                var result = await _dbContext.Staff.AddAsync(new StaffMember()
                {
                    Name         = parameters.Name,
                    MobileNumber = parameters.MobileNumber,
                    AreaCode     = parameters.AreaCode,
                    Email        = parameters.Email,
                    BirthDate    = parameters.BirthDate.Date,
                    Address      = parameters.Address,
                    Role         = StaffMemberRole.Employee,
                    Status       = UserStatus.Inactive
                });

                await _dbContext.SaveChangesAsync();

                var staff = result.Entity;

                return(new StaffMemberCreateResult()
                {
                    Id = staff.Id,
                    Name = parameters.Name,
                    MobileNumber = parameters.MobileNumber,
                    AreaCode = parameters.AreaCode,
                    Email = parameters.Email,
                    Address = parameters.Address,
                    Role = staff.Role,
                });
            }
        }