public async Task <APIResult> Get(int employeeId)
 {
     return(new APIResult()
     {
         Result = 0,
         Data = await employeeQueries.GetEmployee(employeeId)
     });
 }
        public override async Task <int> HandleCommand(AddCommand request, CancellationToken cancellationToken)
        {
            if (request.Employee == null)
            {
                throw new BusinessException("AddWrongInformation");
            }

            var employee = (await employeeQueries.GetEmployees($"code = '{request.Employee.Code}' and is_deleted = 0")).FirstOrDefault();

            if (employee != null)
            {
                throw new BusinessException("Employee.ExistedCode");
            }

            if (request.Employee.ReportTo != null && request.Employee.ReportTo.Value != 0)
            {
                var manager = await employeeQueries.GetEmployee(request.Employee.ReportTo.Value);

                if (manager == null)
                {
                    throw new BusinessException("Employee.NotExistedManager");
                }
            }
            else
            {
                request.Employee.ReportTo     = null;
                request.Employee.ReportToCode = null;
            }

            if (request.Employee.ImageData?.Length > Constant.MaxImageLength)
            {
                throw new BusinessException("Image.OutOfLength");
            }
            //With ImageData < 100byte. This is a link image. With Image > 100byte, It can a real imageData.
            if (request.Employee.ImageData?.Length > 200)
            {
                string type = CommonHelper.GetImageType(System.Text.Encoding.ASCII.GetBytes(request.Employee.ImageData));
                if (!CommonHelper.IsImageType(type))
                {
                    throw new BusinessException("Image.WrongType");
                }
                string Base64StringData = request.Employee.ImageData.Substring(request.Employee.ImageData.IndexOf(",") + 1);
                string fileName         = Guid.NewGuid().ToString().Replace("-", "");
                request.Employee.ImageURL = CommonHelper.SaveImage($"{GlobalConfiguration.EmployeeImagePath}/{DateTime.Now.ToString("yyyyMM")}/", fileName, type, Base64StringData);
            }

            request.Employee.Code = await employeeQueries.GenarateCode();

            request.Employee = CreateBuild(request.Employee, request.LoginSession);
            var rs = await employeeRepository.Add(request.Employee);

            if (rs != 0)
            {
                CommonHelper.DeleteImage(request.Employee.ImageURL);
            }

            return(rs == 0 ? -1 : 0);
        }
Exemple #3
0
        public override async Task <int> HandleCommand(UpdateCommand request, CancellationToken cancellationToken)
        {
            if (request.Employee == null || request.Employee.Id == 0)
            {
                throw new BusinessException("Employee.NotExisted");
            }

            var employee = await employeeQueries.GetEmployee(request.Employee.Id);

            if (employee == null)
            {
                throw new BusinessException("Employee.NotExisted");
            }

            if (request.Employee.ReportTo != null && request.Employee.ReportTo != 0)
            {
                var manager = await employeeQueries.GetEmployee(employee.ReportTo.Value);

                if (manager == null)
                {
                    throw new BusinessException("Employee.NotExistedManager");
                }
            }
            else
            {
                request.Employee.ReportTo     = null;
                request.Employee.ReportToCode = null;
            }

            if (request.Employee.ImageData?.Length > Constant.MaxImageLength)
            {
                throw new BusinessException("Image.OutOfLength");
            }

            string oldImageUrl = request.Employee.ImageURL;

            //With ImageData < 100byte. This is a link image. With Image > 100byte, It can a real imageData.
            if (request.Employee.ImageData?.Length > 200)
            {
                string type = CommonHelper.GetImageType(System.Text.Encoding.ASCII.GetBytes(request.Employee.ImageData));
                if (!CommonHelper.IsImageType(type))
                {
                    throw new BusinessException("Image.WrongType");
                }
                string Base64StringData = request.Employee.ImageData.Substring(request.Employee.ImageData.IndexOf(",") + 1);
                string fileName         = Guid.NewGuid().ToString().Replace("-", "");
                request.Employee.ImageURL = CommonHelper.SaveImage($"{GlobalConfiguration.EmployeeImagePath}/{DateTime.Now.ToString("yyyyMM")}/", fileName, type, Base64StringData);
            }

            request.Employee.CreatedDate = employee.CreatedDate;
            request.Employee.CreatedBy   = employee.CreatedBy;
            request.Employee             = UpdateBuild(request.Employee, request.LoginSession);
            request.Employee.Code        = employee.Code;
            var rs = await employeeRepository.Update(request.Employee);

            if (rs == 0)
            {
                if (request.Employee.ImageData?.Length > 200)
                {
                    LogHelper.GetLogger().Debug($"ImageData Length: {request.Employee.ImageData.Length}. Deleted Image: {oldImageUrl}");
                    CommonHelper.DeleteImage(oldImageUrl);
                }
            }
            else
            {
                LogHelper.GetLogger().Debug($"Delete Image for process failed. Deleted Image: {request.Employee.ImageURL}");
                CommonHelper.DeleteImage(request.Employee.ImageURL);
            }

            return(rs);
        }