예제 #1
0
        public ActionResult AddOrUpdate(SignUpFraudTypeDTO data)
        {
            var result = _validator.Validate(data);

            if (!result.IsValid)
            {
                return(this.Failed(new
                {
                    code = result.Errors[0].ErrorMessage
                }));
            }

            try
            {
                if (data.Id == Guid.Empty)
                {
                    _commands.Create(data, CurrentUser.UserName);
                }
                else
                {
                    _commands.Update(data, CurrentUser.UserName);
                }
            }
            catch (Exception e)
            {
                return(this.Failed(e));
            }
            return(this.Success(new
            {
                code = data.Id == Guid.Empty
                    ? "successfullyCreated"
                    : "successfullyUpdated"
            }));
        }
        public void Create(SignUpFraudTypeDTO data, string createdBy)
        {
            var levels = new List <RiskLevel>();

            if (data.RiskLevels != null)
            {
                data.RiskLevels.ForEach(id =>
                                        levels.Add(
                                            _fraudRepository.RiskLevels.Single(l => l.Id == id)
                                            )
                                        );
            }

            var signUpFraudType = new SignUpFraudType
            {
                Id           = Guid.NewGuid(),
                Name         = data.FraudTypeName,
                SystemAction = data.SystemAction,
                RiskLevels   = levels,
                Remarks      = data.Remarks,
                DateCreated  = DateTimeOffset.Now,
                CreatedBy    = createdBy
            };

            _fraudRepository.SignUpFraudTypes.Add(signUpFraudType);

            _fraudRepository.SaveChanges();

            _eventBus.Publish(new SignUpFraudTypeCreated
            {
                Id            = signUpFraudType.Id,
                FraudTypeName = signUpFraudType.Name,
                SystemAction  = signUpFraudType.SystemAction.ToString(),
                RiskLevels    = signUpFraudType.RiskLevels.Select(o => o.Name).ToArray(),
                Remarks       = signUpFraudType.Remarks
            });
        }
        public void Update(SignUpFraudTypeDTO data, string updatedBy)
        {
            var entity = _fraudRepository.SignUpFraudTypes
                         .Include(o => o.RiskLevels)
                         .Single(o => o.Id == data.Id);

            entity.RiskLevels.Clear();
            var levels = new List <RiskLevel>();

            if (data.RiskLevels != null)
            {
                data.RiskLevels.ForEach(id =>
                                        levels.Add(
                                            _fraudRepository.RiskLevels.Single(l => l.Id == id)
                                            )
                                        );
            }

            entity.Name         = data.FraudTypeName;
            entity.SystemAction = data.SystemAction;
            entity.RiskLevels   = levels;
            entity.Remarks      = data.Remarks;
            entity.DateUpdated  = DateTimeOffset.Now;
            entity.UpdatedBy    = updatedBy;

            _fraudRepository.SaveChanges();

            _eventBus.Publish(new SignUpFraudTypeUpdated
            {
                Id            = entity.Id,
                FraudTypeName = entity.Name,
                SystemAction  = entity.SystemAction.ToString(),
                RiskLevels    = entity.RiskLevels.Select(o => o.Name).ToArray(),
                Remarks       = entity.Remarks
            });
        }