예제 #1
0
        public async Task <object> AddItem(oItem item)
        {
            try
            {
                if (!GlobalInstance.Instance.IsConnected)
                {
                    GlobalInstance.Instance.InitializeSboComObject();
                }
                var list = await repo.GetList(null);

                var itm = list.FirstOrDefault(x => x.RDItemCode == item.RDItemCode);

                string validationStr = ModelValidator.ValidateModel(item);

                if (!string.IsNullOrEmpty(validationStr))
                {
                    errMsg = string.Format(validationStr);
                    ErrorLog _err = new ErrorLog();
                    _err.ErrorCode  = (int)HttpStatusCode.Conflict;
                    _err.Message    = errMsg;
                    _err.StackTrace = Environment.StackTrace;

                    var err = ErrorLogger.Log(_err);

                    transactionLogger.LogItemTransaction(item, false, "A", HttpContext.Current.Request.UserHostAddress, _err);
                    throw new HttpResponseException(new HttpResponseMessage {
                        StatusCode = HttpStatusCode.Conflict, Content = new StringContent(errMsg)
                    });
                }

                if (itm != null)
                {
                    errMsg = string.Format("Item {0} - {1} already exist.", itm.RDItemCode, itm.Description);
                    ErrorLog _err = new ErrorLog();
                    _err.ErrorCode  = (int)HttpStatusCode.Conflict;
                    _err.Message    = errMsg;
                    _err.StackTrace = Environment.StackTrace;

                    var err = ErrorLogger.Log(_err);

                    transactionLogger.LogItemTransaction(item, false, "A", HttpContext.Current.Request.UserHostAddress, _err);
                    throw new HttpResponseException(new HttpResponseMessage {
                        StatusCode = HttpStatusCode.Conflict, Content = new StringContent(errMsg)
                    });
                }

                if (repo.Add(item) < 0)
                {
                    errMsg = GlobalInstance.Instance.SBOErrorMessage;
                    ErrorLog _err = new ErrorLog();
                    _err.ErrorCode  = (int)HttpStatusCode.Conflict;
                    _err.Message    = errMsg;
                    _err.StackTrace = Environment.StackTrace;

                    var err = ErrorLogger.Log(_err);

                    transactionLogger.LogItemTransaction(item, false, "A", HttpContext.Current.Request.UserHostAddress, _err);
                    throw new HttpResponseException(new HttpResponseMessage {
                        StatusCode = HttpStatusCode.Conflict, Content = new StringContent(errMsg)
                    });
                }

                transactionLogger.LogItemTransaction(item, true, "A", HttpContext.Current.Request.UserHostAddress);
                var _itm = await repo.GetByRDItemCode(item.RDItemCode);

                return(new { SAPItemCode = _itm.ItemCode, ReturnMessage = $"Item {item.RDItemCode} - {item.Description} successfully added." });
            }
            catch (HttpResponseException ex)
            {
                throw new HttpResponseException(ex.Response);
            }
        }
        public async Task <IHttpActionResult> InvokeClientAPI(object paramObj, string uri, string transactionType)
        {
            HttpResponseMessage response = new HttpResponseMessage();

            try
            {
                var client = new HttpClient();
                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

                switch (transactionType)
                {
                case "JE":    //JE
                    response = await client.PostAsJsonAsync(uri, (oJournal)paramObj);

                    if (response.IsSuccessStatusCode)
                    {
                        logger.LogJournalTransaction((oJournal)paramObj, true, "A", HttpContext.Current.Request.UserHostAddress);
                    }
                    else
                    {
                        throw new HttpResponseException(response);
                    }
                    break;

                case "AP INV":    //AP
                case "AR INV":    //AR
                    response = await client.PostAsJsonAsync(uri, paramObj);

                    if (response.IsSuccessStatusCode)
                    {
                        logger.LogInvoiceTransaction((oInvoice)paramObj, true, "A", HttpContext.Current.Request.UserHostAddress);
                    }
                    break;

                case "GI":    //GI
                case "GR":    //GR
                    response = await client.PostAsJsonAsync(uri, paramObj);

                    if (response.IsSuccessStatusCode)
                    {
                        logger.LogInventoryTransaction((oInventoryTransaction)paramObj, true, "A", HttpContext.Current.Request.UserHostAddress);
                    }
                    break;

                case "ITM":    //ITM
                    response = await client.PostAsJsonAsync(uri, paramObj);

                    if (response.IsSuccessStatusCode)
                    {
                        logger.LogItemTransaction((oItem)paramObj, true, "A", HttpContext.Current.Request.UserHostAddress);
                    }
                    break;

                case "BP":    //BP
                    response = await client.PostAsJsonAsync(uri, paramObj);

                    if (response.IsSuccessStatusCode)
                    {
                        logger.LogBPTransaction((oBusinessPartner)paramObj, true, "A", HttpContext.Current.Request.UserHostAddress);
                    }
                    break;

                case "GL":    //GL
                    response = await client.PostAsJsonAsync(uri, paramObj);

                    if (response.IsSuccessStatusCode)
                    {
                        logger.LogGlTransaction((oGlAccount)paramObj, true, "A", HttpContext.Current.Request.UserHostAddress);
                    }
                    break;
                }
            }
            catch (HttpResponseException ex)
            {
                ErrorLog err    = null;
                ErrorLog errLog = new ErrorLog();
                switch (transactionType)
                {
                case "JE":
                    err = new ErrorLog {
                        ErrorCode  = (int)HttpStatusCode.BadRequest,
                        Message    = ex.Message,
                        StackTrace = ex.StackTrace
                    };

                    errLog = ErrorLogger.Log(err);

                    logger.LogJournalTransaction((oJournal)paramObj, false, "A", HttpContext.Current.Request.UserHostAddress, errLog);
                    break;

                case "AR INV":
                case "AP INV":
                    err = new ErrorLog
                    {
                        ErrorCode  = (int)HttpStatusCode.BadRequest,
                        Message    = ex.Message,
                        StackTrace = ex.StackTrace
                    };

                    errLog = ErrorLogger.Log(err);

                    logger.LogInvoiceTransaction((oInvoice)paramObj, false, "A", HttpContext.Current.Request.UserHostAddress, errLog);
                    break;

                case "GI":    //GI
                case "GR":    //GR
                    err = new ErrorLog
                    {
                        ErrorCode  = (int)HttpStatusCode.BadRequest,
                        Message    = ex.Message,
                        StackTrace = ex.StackTrace
                    };

                    errLog = ErrorLogger.Log(err);
                    logger.LogInventoryTransaction((oInventoryTransaction)paramObj, false, "A", HttpContext.Current.Request.UserHostAddress, errLog);
                    break;

                case "ITM":    //ITM
                    err = new ErrorLog
                    {
                        ErrorCode  = (int)HttpStatusCode.BadRequest,
                        Message    = ex.Message,
                        StackTrace = ex.StackTrace
                    };

                    errLog = ErrorLogger.Log(err);
                    logger.LogItemTransaction((oItem)paramObj, false, "A", HttpContext.Current.Request.UserHostAddress, errLog);
                    break;

                case "BP":    //BP
                    err = new ErrorLog
                    {
                        ErrorCode  = (int)HttpStatusCode.BadRequest,
                        Message    = ex.Message,
                        StackTrace = ex.StackTrace
                    };

                    errLog = ErrorLogger.Log(err);
                    logger.LogBPTransaction((oBusinessPartner)paramObj, false, "A", HttpContext.Current.Request.UserHostAddress, errLog);
                    break;

                case "GL":    //GL
                    err = new ErrorLog
                    {
                        ErrorCode  = (int)HttpStatusCode.BadRequest,
                        Message    = ex.Message,
                        StackTrace = ex.StackTrace
                    };

                    errLog = ErrorLogger.Log(err);
                    logger.LogGlTransaction((oGlAccount)paramObj, false, "A", HttpContext.Current.Request.UserHostAddress, errLog);
                    break;
                }
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }
            return(Ok());
        }