コード例 #1
0
ファイル: ProductFacade.cs プロジェクト: KKPBank/DNC
        public CreateProductMasterResponse CreateProductMaster(CreateProductMasterRequest request)
        {
            var stopwatch = System.Diagnostics.Stopwatch.StartNew();

            Logger.Info(_logMsg.Clear().SetPrefixMsg("Call MasterService.CreateProductMaster").ToInputLogString());
            Logger.Debug("I:--START--:--MasterService.CreateProductMaster--");

            bool valid = false;

            _commonFacade = new CommonFacade();
            CreateProductMasterResponse response = new CreateProductMasterResponse();

            if (request.Header != null)
            {
                valid           = _commonFacade.VerifyServiceRequest <Header>(request.Header);
                response.Header = new Header
                {
                    reference_no     = request.Header.reference_no,
                    service_name     = request.Header.service_name,
                    system_code      = request.Header.system_code,
                    transaction_date = request.Header.transaction_date
                };
            }

            Logger.DebugFormat("-- XMLRequest --\n{0}", request.SerializeObject());

            var auditLog = new AuditLogEntity();

            auditLog.Module    = Constants.Module.Customer;
            auditLog.Action    = Constants.AuditAction.CreateProductMaster;
            auditLog.IpAddress = ApplicationHelpers.GetClientIP();

            #region "Call Validator"

            if (!valid)
            {
                response.StatusResponse = new StatusResponse
                {
                    ErrorCode   = Constants.ErrorCode.CSMProd001,
                    Status      = Constants.StatusResponse.Failed,
                    Description = "Bad Request, the header is not valid"
                };

                AppLog.AuditLog(auditLog, LogStatus.Fail, response.StatusResponse.Description);
                Logger.DebugFormat("-- XMLResponse --\n{0}", response.SerializeObject());

                stopwatch.Stop();
                Logger.DebugFormat("O:--Finish--:ElapsedMilliseconds/{0}", stopwatch.ElapsedMilliseconds);

                return(response);
            }
            else
            {
                dynamic[] results = DoValidation(request);
                valid = (bool)results[0];
                List <ValidationResult> validationResults = (List <ValidationResult>)results[1];

                if (!valid)
                {
                    response.StatusResponse           = new StatusResponse();
                    response.StatusResponse.ErrorCode = Constants.ErrorCode.CSMProd002;
                    response.StatusResponse.Status    = Constants.StatusResponse.Failed;

                    if (validationResults != null && validationResults.Count > 0)
                    {
                        string msg = "Bad Request, the body is not valid:\n{0}";
                        response.StatusResponse.Description = string.Format(CultureInfo.InvariantCulture, msg,
                                                                            validationResults.Select(x => x.ErrorMessage).Aggregate((i, j) => i + Delimeter + j));
                    }

                    AppLog.AuditLog(auditLog, LogStatus.Fail, response.StatusResponse.Description);
                    Logger.DebugFormat("-- XMLResponse --\n{0}", response.SerializeObject());

                    stopwatch.Stop();
                    Logger.DebugFormat("O:--Finish--:ElapsedMilliseconds/{0}", stopwatch.ElapsedMilliseconds);

                    return(response);
                }
            }

            #endregion

            ProductEntity         product      = null;
            CampaignServiceEntity campaign     = null;
            ProductGroupEntity    productGroup = null;

            if (!string.IsNullOrWhiteSpace(request.ProductGroup.Code) &&
                !string.IsNullOrWhiteSpace(request.ProductGroup.Name))
            {
                productGroup = new ProductGroupEntity
                {
                    ProductGroupCode = request.ProductGroup.Code,
                    ProductGroupName = request.ProductGroup.Name,
                    IsActive         = Constants.ApplicationStatus.Active.ConvertToString().Equals(request.ProductGroup.Status) ? true : false,
                    CreateUser       = request.ProductGroup.CreateUser,
                    CreateDate       = request.ProductGroup.CreateDateValue,
                    UpdateUser       = request.ProductGroup.UpdateUser,
                    UpdateDate       = request.ProductGroup.UpdateDateValue
                };
            }

            if (request.Product != null && !string.IsNullOrWhiteSpace(request.Product.Code) &&
                !string.IsNullOrWhiteSpace(request.Product.Name))
            {
                product = new ProductEntity
                {
                    ProductCode = request.Product.Code,
                    ProductName = request.Product.Name,
                    ProductType = request.Product.ProductType,
                    IsActive    = Constants.ApplicationStatus.Active.ConvertToString().Equals(request.Product.Status) ? true : false,
                    CreateUser  = request.Product.CreateUser,
                    CreateDate  = request.Product.CreateDateValue,
                    UpdateUser  = request.Product.UpdateUser,
                    UpdateDate  = request.Product.UpdateDateValue
                };
            }

            if (request.Campaign != null && !string.IsNullOrWhiteSpace(request.Campaign.Code) &&
                !string.IsNullOrWhiteSpace(request.Campaign.Name))
            {
                campaign = new CampaignServiceEntity
                {
                    CampaignServiceCode = request.Campaign.Code,
                    CampaignServiceName = request.Campaign.Name,
                    IsActive            = Constants.ApplicationStatus.Active.ConvertToString().Equals(request.Campaign.Status) ? true : false,
                    CreateUser          = request.Campaign.CreateUser,
                    CreateDate          = request.Campaign.CreateDateValue,
                    UpdateUser          = request.Campaign.UpdateUser,
                    UpdateDate          = request.Campaign.UpdateDateValue
                };
            }

            if (productGroup != null)
            {
                _productDataAccess = new ProductDataAccess(_context);
                bool success = _productDataAccess.SaveProductMaster(productGroup, product, campaign);

                if (success)
                {
                    response.StatusResponse = new StatusResponse
                    {
                        ErrorCode   = string.Empty,
                        Status      = Constants.StatusResponse.Success,
                        Description = "Create successful data"
                    };

                    AppLog.AuditLog(auditLog, LogStatus.Success, response.StatusResponse.Description);

                    Logger.DebugFormat("-- XMLResponse --\n{0}", response.SerializeObject());
                    stopwatch.Stop();
                    Logger.DebugFormat("O:--Finish--:ElapsedMilliseconds/{0}", stopwatch.ElapsedMilliseconds);

                    return(response);
                }
            }

            response.StatusResponse = new StatusResponse
            {
                ErrorCode   = Constants.ErrorCode.CSMProd003,
                Status      = Constants.StatusResponse.Failed,
                Description = "Fail to create data"
            };

            AppLog.AuditLog(auditLog, LogStatus.Fail, response.StatusResponse.Description);
            Logger.DebugFormat("-- XMLResponse --\n{0}", response.SerializeObject());
            stopwatch.Stop();
            Logger.DebugFormat("O:--Finish--:ElapsedMilliseconds/{0}", stopwatch.ElapsedMilliseconds);

            return(response);
        }
コード例 #2
0
ファイル: ProductDataAccess.cs プロジェクト: KKPBank/DNC
        public bool SaveProductMaster(ProductGroupEntity productGroup, ProductEntity product, CampaignServiceEntity campaign)
        {
            try
            {
                using (var transaction = _context.Database.BeginTransaction(IsolationLevel.ReadCommitted))
                {
                    _context.Configuration.AutoDetectChangesEnabled = false;

                    try
                    {
                        TB_R_PRODUCT         dbProduct      = null;
                        TB_R_CAMPAIGNSERVICE dbCampaign     = null;
                        TB_R_PRODUCTGROUP    dbProductGroup = null;

                        #region "Product Group"

                        if (productGroup != null)
                        {
                            dbProductGroup = _context.TB_R_PRODUCTGROUP.FirstOrDefault(x => x.PRODUCTGROUP_CODE == productGroup.ProductGroupCode);
                            if (dbProductGroup == null)
                            {
                                dbProductGroup = new TB_R_PRODUCTGROUP
                                {
                                    PRODUCTGROUP_CODE      = productGroup.ProductGroupCode,
                                    PRODUCTGROUP_NAME      = productGroup.ProductGroupName,
                                    PRODUCTGROUP_IS_ACTIVE = productGroup.IsActive,
                                    CREATE_USER            = productGroup.CreateUser,
                                    CREATE_DATE            = productGroup.CreateDate,
                                    UPDATE_USER            = productGroup.UpdateUser,
                                    UPDATE_DATE            = productGroup.UpdateDate
                                };

                                _context.TB_R_PRODUCTGROUP.Add(dbProductGroup);
                            }
                            else
                            {
                                dbProductGroup.PRODUCTGROUP_CODE      = productGroup.ProductGroupCode;
                                dbProductGroup.PRODUCTGROUP_NAME      = productGroup.ProductGroupName;
                                dbProductGroup.PRODUCTGROUP_IS_ACTIVE = productGroup.IsActive;
                                dbProductGroup.UPDATE_USER            = productGroup.UpdateUser;
                                dbProductGroup.UPDATE_DATE            = productGroup.UpdateDate;
                                SetEntryStateModified(dbProductGroup);
                            }

                            this.Save();
                        }

                        #endregion

                        #region "Product"

                        if (dbProductGroup != null && product != null)
                        {
                            dbProduct = _context.TB_R_PRODUCT.FirstOrDefault(x => x.PRODUCT_CODE == product.ProductCode);
                            if (dbProduct == null)
                            {
                                dbProduct = new TB_R_PRODUCT
                                {
                                    PRODUCT_CODE      = product.ProductCode,
                                    PRODUCT_NAME      = product.ProductName,
                                    PRODUCT_TYPE      = product.ProductType,
                                    PRODUCT_IS_ACTIVE = product.IsActive,
                                    PRODUCTGROUP_ID   = dbProductGroup.PRODUCTGROUP_ID,
                                    CREATE_USER       = product.CreateUser,
                                    CREATE_DATE       = product.CreateDate,
                                    UPDATE_USER       = product.UpdateUser,
                                    UPDATE_DATE       = product.UpdateDate
                                };

                                _context.TB_R_PRODUCT.Add(dbProduct);
                            }
                            else
                            {
                                dbProduct.PRODUCT_CODE      = product.ProductCode;
                                dbProduct.PRODUCT_NAME      = product.ProductName;
                                dbProduct.PRODUCT_TYPE      = product.ProductType;
                                dbProduct.PRODUCT_IS_ACTIVE = product.IsActive;
                                dbProduct.PRODUCTGROUP_ID   = dbProductGroup.PRODUCTGROUP_ID;
                                dbProduct.UPDATE_USER       = product.UpdateUser;
                                dbProduct.UPDATE_DATE       = product.UpdateDate;
                                SetEntryStateModified(dbProduct);
                            }

                            this.Save();
                        }

                        #endregion

                        #region "Campaign"

                        if (dbProduct != null && campaign != null)
                        {
                            dbCampaign = _context.TB_R_CAMPAIGNSERVICE.FirstOrDefault(x => x.CAMPAIGNSERVICE_CODE == campaign.CampaignServiceCode);
                            if (dbCampaign == null)
                            {
                                dbCampaign = new TB_R_CAMPAIGNSERVICE
                                {
                                    CAMPAIGNSERVICE_CODE      = campaign.CampaignServiceCode,
                                    CAMPAIGNSERVICE_NAME      = campaign.CampaignServiceName,
                                    CAMPAIGNSERVICE_IS_ACTIVE = campaign.IsActive,
                                    PRODUCT_ID  = dbProduct.PRODUCT_ID,
                                    CREATE_USER = campaign.CreateUser,
                                    CREATE_DATE = campaign.CreateDate,
                                    UPDATE_USER = campaign.UpdateUser,
                                    UPDATE_DATE = campaign.UpdateDate
                                };

                                _context.TB_R_CAMPAIGNSERVICE.Add(dbCampaign);
                            }
                            else
                            {
                                dbCampaign.CAMPAIGNSERVICE_CODE      = campaign.CampaignServiceCode;
                                dbCampaign.CAMPAIGNSERVICE_NAME      = campaign.CampaignServiceName;
                                dbCampaign.CAMPAIGNSERVICE_IS_ACTIVE = campaign.IsActive;
                                dbCampaign.PRODUCT_ID  = dbProduct.PRODUCT_ID;
                                dbCampaign.UPDATE_USER = campaign.UpdateUser;
                                dbCampaign.UPDATE_DATE = campaign.UpdateDate;
                                SetEntryStateModified(dbCampaign);
                            }

                            this.Save();
                        }

                        #endregion

                        transaction.Commit();
                        return(true);
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        Logger.Error("Exception occur:\n", ex);
                    }
                    finally
                    {
                        _context.Configuration.AutoDetectChangesEnabled = true;
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Exception occur:\n", ex);
            }

            return(false);
        }