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); }
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); }