public HttpResponseMessage ReturnSaleItems([FromBody] ReturnSaleModel model)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,ReturnSaleController,returnItems,{string.Empty},{dateStart:hh.mm.ss.ffffff}");
            ErrorMessage        message;
            List <ErrorMessage> saleLineMessages;
            string userCode;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            var user = CacheManager.GetUser(userCode) ?? _loginManager.GetUser(userCode);

            if (model.SaleLines == null || model.SaleLines.Length <= 0)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse
                {
                    Error = new MessageStyle {
                        Message = Resource.LineRequired, MessageType = MessageType.OkOnly
                    }
                }));
            }

            var sale = _returnSaleManager.ReturnSaleItems(user, model.SaleTillNumber, model.TillNumber, model.SaleNumber,
                                                          model.SaleLines, model.IsCorrection, model.ReasonType, model.ReasonCode, out message,
                                                          out saleLineMessages);


            if (!string.IsNullOrEmpty(message.MessageStyle.Message))
            {
                _performancelog.Debug($"End,ReturnSaleController,returnItems,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                return(Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse
                {
                    Error = message.MessageStyle
                }));
            }

            var editLines = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);

            var messages = new List <object>();

            if (saleLineMessages.Count > 0)
            {
                messages.AddRange(saleLineMessages.Select(saleLineMessage => new
                {
                    error = saleLineMessage.MessageStyle,
                }));
            }
            var enableButtons   = _saleManager.EnableCashButton(sale, userCode);
            var userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);
            var saleModel       = messages.Count > 0 ? SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff, messages) :
                                  SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff);

            _performancelog.Debug($"End,ReturnSaleController,returnItems,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
            return(Request.CreateResponse(HttpStatusCode.OK, saleModel));
        }
        public HttpResponseMessage GetSale(int saleNumber, int tillNumber)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,ReturnSaleController,GetSale,{string.Empty},{dateStart:hh.mm.ss.ffffff}");
            string userCode;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            ErrorMessage message;
            var          sale = _returnSaleManager.GetSale(saleNumber, tillNumber, out message);

            if (!string.IsNullOrEmpty(message.MessageStyle.Message))
            {
                _performancelog.Debug($"End,ReturnSaleController,GetSale,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                return(Request.CreateResponse(HttpStatusCode.NotFound, new ErrorResponse
                {
                    Error = message.MessageStyle
                }));
            }

            var editLines       = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);
            var enableButtons   = _saleManager.EnableCashButton(sale, userCode);
            var userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);
            var saleModel       = SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff);

            _performancelog.Debug($"End,ReturnSaleController,GetSale,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
            return(Request.CreateResponse(HttpStatusCode.OK, saleModel));
        }
        public HttpResponseMessage DeactivateGivexCard([FromBody] ActivateGivexModel givexModel)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,GivexController,DeactivateGivexCard,{string.Empty},{dateStart:hh.mm.ss.ffffff}");

            ErrorMessage        errorMessage;
            HttpResponseMessage responseMessage;

            var cardNumber = givexModel.GivexCardNumber;

            if (!ValidateGivexCard(ref cardNumber, out responseMessage))
            {
                return(responseMessage);
            }
            givexModel.GivexCardNumber = cardNumber;

            if (!ValidateStockCode(givexModel.StockCode, out responseMessage))
            {
                return(responseMessage);
            }

            string userCode;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            Report giveReceipt;
            var    sale = _givexManager.DeactivateGivexCard(givexModel.GivexCardNumber,
                                                            givexModel.GivexPrice,
                                                            userCode,
                                                            givexModel.TillNumber,
                                                            givexModel.SaleNumber,
                                                            givexModel.StockCode,
                                                            out giveReceipt,
                                                            out errorMessage);

            if (!string.IsNullOrEmpty(errorMessage.MessageStyle.Message))
            {
                return(Request.CreateResponse(errorMessage.StatusCode, new ErrorResponse
                {
                    Error = errorMessage.MessageStyle
                }));
            }

            var editLines       = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);
            var enableButtons   = _saleManager.EnableCashButton(sale, userCode);
            var userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);
            var saleModel       = SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff);
            var response        = new GivexResponseModel
            {
                Sale    = saleModel,
                Receipt = giveReceipt
            };

            _performancelog.Debug($"End,GivexController,DeactivateGivexCard,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
            return(Request.CreateResponse(HttpStatusCode.OK, response));
        }
示例#4
0
        public HttpResponseMessage InitializeSale(int tillNumber, int registerNumber)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,SaleController,InitializeSale,{string.Empty},{dateStart:hh.mm.ss.ffffff}");

            ErrorMessage        message;
            string              userCode;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            var sale = _saleManager.InitializeSale(tillNumber, registerNumber, userCode, out message);

            if (message?.MessageStyle?.Message != null)
            {
                return(Request.CreateResponse(HttpStatusCode.Conflict, message));
            }
            if (sale != null)
            {
                var editLines       = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);
                var enableButton    = _saleManager.EnableCashButton(sale, userCode);
                var userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);
                var saleModel       = SaleMapper.CreateSaleModel(sale, editLines, enableButton, userCanWriteOff);
                _performancelog.Debug($"End,SaleController,InitializeSale,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                return(Request.CreateResponse(HttpStatusCode.OK, saleModel));
            }


            return(null);
        }
示例#5
0
        public HttpResponseMessage SearchLoyaltyCustomer(string searchTerm, int tillNumber, int saleNumber, int pageIndex = 1, int pageSize = 100)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,CustomerController,SearchLoyaltyCustomer,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}");

            int totalResults;
            var customers = _customerManager.SearchLoyaltyCustomer(searchTerm, out totalResults, pageIndex, pageSize);

            if (totalResults == -999)
            {
                string userCode;
                HttpResponseMessage httpResponseMessage;
                if (GetUserCode(out userCode, out httpResponseMessage))
                {
                    return(httpResponseMessage);
                }
                var firstOrDefault = customers.FirstOrDefault();
                if (firstOrDefault != null)
                {
                    var          code = firstOrDefault.Code;
                    ErrorMessage error;
                    var          sale = _saleManager.SetCustomer(code, saleNumber, tillNumber,
                                                                 userCode, 0, searchTerm, out error);
                    if (!string.IsNullOrEmpty(error.MessageStyle.Message))
                    {
                        return(Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse
                        {
                            Error = error.MessageStyle
                        }));
                    }
                    if (sale != null)
                    {
                        var editLines       = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);
                        var enableButtons   = _saleManager.EnableCashButton(sale, userCode);
                        var userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);
                        var saleModel       = SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff);
                        return(Request.CreateResponse(HttpStatusCode.Accepted, saleModel));
                    }
                }
            }

            if (totalResults == 0)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse
                {
                    Error = new MessageStyle
                    {
                        Message = Resource.CustomerNotExists,
                        MessageType = MessageType.OkOnly
                    }
                }));
            }

            var listCust = GetLoyaltyCustomerResponseModels(customers);

            _performancelog.Debug($"End,CustomerController,SearchLoyaltyCustomer,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
            return(Request.CreateResponse(HttpStatusCode.OK, listCust));
        }
        public HttpResponseMessage DeleteUnCompletePrepay([FromBody] DeleteUnCompletePrepayModel model)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,FuelPumpController,DeleteUnCompletePrepay,{string.Empty},{dateStart:hh.mm.ss.ffffff}");

            ErrorMessage        error;
            string              userCode;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            var sale = _unCompletePrepayManager.DeleteUnCompletePrepay(model.PumpId, model.SaleNum, model.TillNumber, out error);

            if (!string.IsNullOrEmpty(error.MessageStyle.Message))
            {
                return(Request.CreateResponse(HttpStatusCode.Conflict,
                                              new ErrorResponse
                {
                    Error = error.MessageStyle,
                }));
            }


            object saleModel;
            var    editLines       = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);
            var    enableButtons   = _saleManager.EnableCashButton(sale, userCode);
            var    userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);

            if (!string.IsNullOrEmpty(error.MessageStyle.Message))
            {
                var message = new
                {
                    error = error.MessageStyle,
                };
                var messages = new List <object> {
                    message
                };

                saleModel = SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff, messages);
            }
            else
            {
                saleModel = SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff);
            }
            _performancelog.Debug($"End,SaleController,DeleteUnCompletePrepay,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

            return(Request.CreateResponse(HttpStatusCode.OK, saleModel));
        }
        public HttpResponseMessage AddFuelSaleFromBasket([FromBody] FuelBasketModel model)
        {
            // bool  flag = false;
            //SaleModel s=null;
            WriteUDPData(DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss tt") + "Inside if 550");
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,FuelPumpController,AddPrepay,{string.Empty},{dateStart:hh.mm.ss.ffffff}");

            ErrorMessage error;
            var          accessToken = Request.GetFirstHeaderValueOrDefault <string>("authToken");

            if (accessToken == null)
            {
                return(Request.CreateResponse(
                           HttpStatusCode.BadRequest,
                           new ErrorResponse
                {
                    Error = new MessageStyle {
                        Message = Resource.Error, MessageType = 0
                    }
                }));
            }

            var userCode = TokenValidator.GetUserCode(accessToken);

            WriteUDPData(DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss tt") + "Inside 572");
            var sale = _fuelPumpManager.AddFuelSaleFromBasket(model.SaleNumber, model.TillNumber, model.RegisterNumber, model.ActivePump, model.BasketValue, out error);

            WriteUDPData(DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss tt") + "Inside if 574");

            if (!string.IsNullOrEmpty(error.MessageStyle.Message))
            {
                return(Request.CreateResponse(HttpStatusCode.Conflict,
                                              new ErrorResponse
                {
                    Error = error.MessageStyle,
                }));
            }

            var editLines       = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);
            var enableButton    = _saleManager.EnableCashButton(sale, userCode);
            var userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);
            var saleModel       = SaleMapper.CreateSaleModel(sale, editLines, enableButton, userCanWriteOff);

            _performancelog.Debug($"End,FuelPumpController,AddPrepay,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
            WriteUDPData(DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss tt") + "Inside if 584");
            //  s = saleModel;

            return(Request.CreateResponse(HttpStatusCode.OK, saleModel));
        }
        public HttpResponseMessage AddPrepay([FromBody] AddPrepayModel model)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,FuelPumpController,AddPrepay,{string.Empty},{dateStart:hh.mm.ss.ffffff}");

            ErrorMessage error;
            var          accessToken = Request.GetFirstHeaderValueOrDefault <string>("authToken");

            if (accessToken == null)
            {
                return(Request.CreateResponse(
                           HttpStatusCode.BadRequest,
                           new ErrorResponse
                {
                    Error = new MessageStyle {
                        Message = Resource.Error, MessageType = 0
                    }
                }));
            }

            var userCode = TokenValidator.GetUserCode(accessToken);

            var sale = _fuelPrepayManager.AddPrepay(model.SaleNumber, model.TillNumber, model.ActivePump, model.Amount, model.FuelGrade, model.IsAmountCash, out error);

            if (!string.IsNullOrEmpty(error.MessageStyle.Message))
            {
                return(Request.CreateResponse(HttpStatusCode.Conflict,
                                              new ErrorResponse
                {
                    Error = error.MessageStyle,
                }));
            }
            if (sale != null)
            {
                var editLines       = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);
                var enableButton    = _saleManager.EnableCashButton(sale, userCode);
                var userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);
                var saleModel       = SaleMapper.CreateSaleModel(sale, editLines, enableButton, userCanWriteOff);
                _performancelog.Debug($"End,FuelPumpController,AddPrepay,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                return(Request.CreateResponse(HttpStatusCode.OK, saleModel));
            }


            return(null);
        }
示例#9
0
        public HttpResponseMessage UnSuspendSale(int saleNumber, int tillNumber)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,SaleController,UnSuspendSale,{string.Empty},{dateStart:hh.mm.ss.ffffff}");
            string userCode;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            if (saleNumber > 0)
            {
                ErrorMessage errorMessage;
                var          sale = _suspendedSaleManger.UnsuspendSale(saleNumber, tillNumber, userCode, out errorMessage);

                if (!string.IsNullOrEmpty(errorMessage.MessageStyle.Message))
                {
                    return(Request.CreateResponse(
                               HttpStatusCode.NotFound,
                               new ErrorResponse
                    {
                        Error = errorMessage.MessageStyle
                    }));
                }
                if (sale != null)
                {
                    var editLines       = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);
                    var enableButtons   = _saleManager.EnableCashButton(sale, userCode);
                    var userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);
                    var saleModel       = SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff);
                    _performancelog.Debug(
                        $"End,SaleController,UnSuspendSale,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                    return(Request.CreateResponse(HttpStatusCode.OK, saleModel));
                }
            }
            return(Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse
            {
                Error = new MessageStyle {
                    Message = Resource.SaleNotExist, MessageType = (MessageType)16
                }
            }));
        }
示例#10
0
        public HttpResponseMessage RemoveSaleLineItem(int tillNumber, int saleNumber, int lineNumber)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,SaleController,RemoveSaleLineItem,{string.Empty},{dateStart:hh.mm.ss.ffffff}");

            ErrorMessage        error;
            string              userCode;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            var sale = _saleManager.RemoveSaleLineItem(userCode, tillNumber, saleNumber, lineNumber, out error, true,
                                                       true);

            if (!string.IsNullOrEmpty(error?.MessageStyle?.Message))
            {
                var statusCode = error.StatusCode == 0 ? HttpStatusCode.BadRequest : error.StatusCode;
                return(Request.CreateResponse(
                           statusCode,
                           new ErrorResponse
                {
                    Error = error.MessageStyle,
                }));
            }

            var editLines       = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);
            var enableButtons   = _saleManager.EnableCashButton(sale, userCode);
            var userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);
            var saleModel       = SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff);

            _performancelog.Debug($"End,SaleController,RemoveSaleLineItem,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

            return(Request.CreateResponse(HttpStatusCode.OK, saleModel));
        }
        public HttpResponseMessage IncreaseGivexCard([FromBody] ActivateGivexModel givexModel)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,GivexController,IncreaseGivexCard,{string.Empty},{dateStart:hh.mm.ss.ffffff}");

            ErrorMessage        errorMessage;
            HttpResponseMessage responseMessage;
            var offSet     = _policyManager.LoadStoreInfo().OffSet;
            var cardNumber = givexModel.GivexCardNumber;

            if (!ValidateGivexCard(ref cardNumber, out responseMessage))
            {
                return(responseMessage);
            }
            givexModel.GivexCardNumber = cardNumber;

            if (!ValidateStockCode(givexModel.StockCode, out responseMessage))
            {
                return(responseMessage);
            }
            string userCode;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            if (Conversion.Val(givexModel.GivexPrice) <= 0)
            {
                var messageType = (int)MessageType.OkOnly + MessageType.Critical;

                return(Request.CreateResponse(HttpStatusCode.NotAcceptable,
                                              new ErrorResponse
                {
                    Error = _resourceManager.CreateMessage(offSet, 32, 95, null, messageType),
                }));
            }
            Report giveReceipt;
            var    sale = _givexManager.IncreaseGivexCard(givexModel.GivexCardNumber,
                                                          givexModel.GivexPrice,
                                                          userCode,
                                                          givexModel.TillNumber,
                                                          givexModel.SaleNumber,
                                                          givexModel.StockCode,
                                                          out giveReceipt,
                                                          out errorMessage);

            if (!string.IsNullOrEmpty(errorMessage.MessageStyle.Message))
            {
                return(Request.CreateResponse(errorMessage.StatusCode, new ErrorResponse
                {
                    Error = errorMessage.MessageStyle
                }));
            }

            var editLines       = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);
            var enableButtons   = _saleManager.EnableCashButton(sale, userCode);
            var userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);
            var saleModel       = SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff);
            var response        = new GivexResponseModel
            {
                Sale    = saleModel,
                Receipt = giveReceipt
            };

            _performancelog.Debug($"End,GivexController,IncreaseGivexCard,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
            return(Request.CreateResponse(HttpStatusCode.OK, response));
        }
示例#12
0
        public HttpResponseMessage SetCustomer(string customerCode, int tillNumber, int saleNumber, byte registerNumber)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,SaleController,UpdateSaleLineItem,{string.Empty},{dateStart:hh.mm.ss.ffffff}");

            ErrorMessage        error;
            string              userCode;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            var sale = _saleManager.SetCustomer(customerCode, saleNumber, tillNumber, userCode, registerNumber,
                                                string.Empty, out error);

            if (!string.IsNullOrEmpty(error.MessageStyle.Message) && sale == null)
            {
                return(Request.CreateResponse(error.StatusCode,
                                              new ErrorResponse
                {
                    Error = error.MessageStyle,
                }));
            }
            else if (!string.IsNullOrEmpty(error.MessageStyle.Message) && sale != null)
            {
                var editLines       = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);
                var enableButtons   = _saleManager.EnableCashButton(sale, userCode);
                var userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);
                var saleModel       = SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff);
                if (saleModel.SaleLineErrors == null)
                {
                    saleModel.SaleLineErrors = new List <object>();
                    saleModel.SaleLineErrors.Add(new ErrorResponse
                    {
                        Error = error.MessageStyle,
                    });
                }
                else
                {
                    saleModel.SaleLineErrors.Add(new ErrorResponse
                    {
                        Error = error.MessageStyle,
                    });
                }
                _performancelog.Debug($"End,SaleController,SetCustomer,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                return(Request.CreateResponse(HttpStatusCode.OK, saleModel));
            }

            if (error.MessageStyle != null && string.IsNullOrEmpty(error.MessageStyle.Message))
            {
                var editLines       = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);
                var enableButtons   = _saleManager.EnableCashButton(sale, userCode);
                var userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);
                var saleModel       = SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff);
                _performancelog.Debug($"End,SaleController,SetCustomer,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                return(Request.CreateResponse(HttpStatusCode.OK, saleModel));
            }
            return(null);
        }
示例#13
0
        public HttpResponseMessage UpdateSaleLineItem([FromBody] UpdateSaleLineModel saleLineModel)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,SaleController,UpdateSaleLineItem,{string.Empty},{dateStart:hh.mm.ss.ffffff}");

            ErrorMessage        error;
            string              userCode;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            if (saleLineModel == null)
            {
                return(Request.CreateResponse(
                           HttpStatusCode.BadRequest,
                           new ErrorResponse
                {
                    Error = new MessageStyle {
                        Message = Resource.InvalidDataEntered, MessageType = 0
                    }
                }));
            }

            // var sale = new Sale();
            var sale = _saleManager.UpdateSaleLine(saleLineModel.SaleNumber, saleLineModel.TillNumber,
                                                   saleLineModel.LineNumber, userCode, saleLineModel.Discount,
                                                   saleLineModel.DiscountType, saleLineModel.Quantity, saleLineModel.Price, saleLineModel.ReasonCode,
                                                   saleLineModel.ReasonType, saleLineModel.RegisterNumber,
                                                   out error);

            if (!string.IsNullOrEmpty(error.MessageStyle.Message) && error.StatusCode != HttpStatusCode.OK)
            {
                return(Request.CreateResponse(error.StatusCode,
                                              new ErrorResponse
                {
                    Error = error.MessageStyle,
                }));
            }
            if (sale != null)
            {
                object saleModel;
                if (!string.IsNullOrEmpty(error.MessageStyle.Message))
                {
                    var message = new
                    {
                        error = error.MessageStyle,
                    };
                    var messages = new List <object> {
                        message
                    };
                    var editLines       = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);
                    var enableButtons   = _saleManager.EnableCashButton(sale, userCode);
                    var userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);
                    saleModel = SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff, messages);
                }
                else
                {
                    var editLines       = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);
                    var enableButtons   = _saleManager.EnableCashButton(sale, userCode);
                    var userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);
                    saleModel = SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff);
                }
                _performancelog.Debug($"End,SaleController,UpdateSaleLineItem,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                return(Request.CreateResponse(HttpStatusCode.OK, saleModel));
            }
            return(null);
        }
示例#14
0
        public HttpResponseMessage VerifyAndAddSaleLineItem([FromBody] AddSaleLineModel model)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,SaleController,VerifyAndAddSaleLineItem,{string.Empty},{dateStart:hh.mm.ss.ffffff}");

            ErrorMessage        error;
            string              userCode;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            if (model == null)
            {
                return(Request.CreateResponse(
                           HttpStatusCode.BadRequest,
                           new ErrorResponse
                {
                    Error = new MessageStyle {
                        Message = Constants.InvalidRequest
                    }
                }));
            }

            var stockMessage = _saleLineManager.CheckStockConditions(model.SaleNumber, model.TillNumber, model.StockCode, userCode,
                                                                     model.IsReturnMode, (float)model.Quantity, out error);

            if (!string.IsNullOrEmpty(error.MessageStyle.Message))
            {
                return(Request.CreateResponse(error.StatusCode,
                                              new ErrorResponse
                {
                    Error = error.MessageStyle,
                }));
            }

            //if (stockMessage.AddStockPage.OpenAddStockPage || stockMessage.GiftCertPage.OpenGiftCertPage || stockMessage.GivexPage.OpenGivexPage || stockMessage.RestrictionPage.OpenRestrictionPage || !string.IsNullOrEmpty(stockMessage.QuantityMessage.Message) || !string.IsNullOrEmpty(stockMessage.RegularPriceMessage.Message))
            if (stockMessage.AddStockPage.OpenAddStockPage ||
                stockMessage.GiftCertPage.OpenGiftCertPage ||
                stockMessage.GivexPage.OpenGivexPage ||
                stockMessage.RestrictionPage.OpenRestrictionPage ||
                stockMessage.PSInetPage.OpenPSInetPage ||
                !string.IsNullOrEmpty(stockMessage.QuantityMessage.Message) ||
                !string.IsNullOrEmpty(stockMessage.RegularPriceMessage.Message))
            {
                return(Request.CreateResponse(HttpStatusCode.PartialContent, stockMessage));
            }

            if (!stockMessage.CanManuallyEnterProduct && model.IsManuallyAdded)
            {
                return(Request.CreateResponse(HttpStatusCode.Conflict,
                                              new ErrorResponse
                {
                    Error = new MessageStyle
                    {
                        Message = stockMessage.ManuallyEnterMessage,
                        MessageType = 0
                    }
                }));
            }

            var sale = _saleManager.VerifyAddSaleLineItem(userCode, model.TillNumber,
                                                          model.SaleNumber, model.RegisterNumber, model.StockCode,
                                                          model.Quantity, model.IsReturnMode, model.GiftCard, out error);

            if (!string.IsNullOrEmpty(error.MessageStyle.Message) && error.StatusCode != HttpStatusCode.OK)
            {
                return(Request.CreateResponse(error.StatusCode,
                                              new ErrorResponse
                {
                    Error = error.MessageStyle,
                }));
            }
            if (sale != null)
            {
                object saleModel;
                var    editLines       = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);
                var    enableButtons   = _saleManager.EnableCashButton(sale, userCode);
                var    userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);

                if (!string.IsNullOrEmpty(error.MessageStyle.Message))
                {
                    var message = new
                    {
                        error = error.MessageStyle,
                    };
                    var messages = new List <object> {
                        message
                    };

                    saleModel = SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff, messages);
                }
                else
                {
                    saleModel = SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff);
                }
                _performancelog.Debug($"End,SaleController,VerifyAndAddSaleLineItem,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                return(Request.CreateResponse(HttpStatusCode.OK, saleModel));
            }
            return(null);
        }
        public HttpResponseMessage ReturnSale([FromBody] ReturnSaleModel model)
        {
            var                 dateStart = DateTime.Now;
            ErrorMessage        message;
            List <ErrorMessage> saleLineMessages;

            _performancelog.Debug($"Start,ReturnSaleController,return,{string.Empty},{dateStart:hh.mm.ss.ffffff}");
            string userCode;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            var    user = CacheManager.GetUser(userCode) ?? _loginManager.GetUser(userCode);
            Report fs;
            string fileName;
            var    sale = _returnSaleManager.ReturnSale(user, model.SaleNumber, model.TillNumber, model.SaleTillNumber, model.IsCorrection,
                                                        model.ReasonType, model.ReasonCode, out message, out saleLineMessages, out fs, out fileName);

            if (!string.IsNullOrEmpty(message.MessageStyle.Message))
            {
                _performancelog.Debug(
                    $"End,ReturnSaleController,return,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                return(Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse
                {
                    Error = message.MessageStyle
                }));
            }

            var editLines = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);
            var messages  = new List <object>();

            if (saleLineMessages.Count > 0)
            {
                messages.AddRange(saleLineMessages.Select(saleLineMessage => new
                {
                    error = saleLineMessage.MessageStyle,
                }));
            }
            var enableButtons   = _saleManager.EnableCashButton(sale, userCode);
            var userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);
            var saleModel       = messages.Count > 0 ? SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff, messages) :
                                  SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff);
            var returnSale = new ReturnSaleResponseModel
            {
                Sale = saleModel
            };

            if (fs != null)
            {
                returnSale.Receipt = new ReportModel
                {
                    ReportContent = fs.ReportName,
                    ReportName    = fs.ReportContent,
                    Copies        = 1
                };
            }
            _performancelog.Debug($"End,ReturnSaleController,return,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
            return(Request.CreateResponse(HttpStatusCode.OK, returnSale));
        }
        public HttpResponseMessage AddFuelManually([FromBody] ManualFuelModel fuelModel)
        {
            ErrorMessage error;
            var          accessToken = Request.GetFirstHeaderValueOrDefault <string>("authToken");

            if (accessToken == null)
            {
                return(Request.CreateResponse(
                           HttpStatusCode.BadRequest,
                           new ErrorResponse
                {
                    Error = new MessageStyle {
                        Message = Resource.Error
                    }
                }));
            }

            var userCode = TokenValidator.GetUserCode(accessToken);

            if (fuelModel == null)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest,
                                              new ErrorResponse
                {
                    Error = new MessageStyle
                    {
                        Message = Resource.InvalidRequest,
                        MessageType = MessageType.OkOnly
                    },
                }));
            }

            var sale = _fuelPumpManager.AddFuelManually(fuelModel.SaleNumber, fuelModel.TillNumber,
                                                        fuelModel.RegisterNumber, userCode, out error, fuelModel.Amount, fuelModel.Grade,
                                                        fuelModel.PumpId, fuelModel.IsCashSelected);

            if (!string.IsNullOrEmpty(error.MessageStyle.Message))
            {
                return(Request.CreateResponse(HttpStatusCode.Conflict,
                                              new ErrorResponse
                {
                    Error = error.MessageStyle,
                }));
            }

            if (sale != null)
            {
                object saleModel;
                var    editLines       = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);
                var    enableButtons   = _saleManager.EnableCashButton(sale, userCode);
                var    userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);

                if (!string.IsNullOrEmpty(error.MessageStyle.Message))
                {
                    var message = new
                    {
                        error = error.MessageStyle,
                    };
                    var messages = new List <object> {
                        message
                    };

                    saleModel = SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff, messages);
                }
                else
                {
                    saleModel = SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff);
                }

                return(Request.CreateResponse(HttpStatusCode.OK, saleModel));
            }

            return(Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse
            {
                Error = new MessageStyle
                {
                    Message = Resource.InvalidRequest,
                    MessageType = MessageType.OkOnly
                }
            }));
        }
示例#17
0
        public HttpResponseMessage GetCustomerByCard([FromBody] SearchBycardModel model)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,CustomerController,GetCustomerByCard,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}");

            MessageStyle message;

            if (string.IsNullOrEmpty(model.CardNumber))
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse
                {
                    Error = new MessageStyle
                    {
                        Message = Resource.CardRequired,
                        MessageType = MessageType.OkOnly
                    }
                }));
            }
            var customer = _customerManager.SearchCustomerCard(model.CardNumber, model.IsLoyaltycard, out message);

            if (!string.IsNullOrEmpty(message.Message))
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse
                {
                    Error = new MessageStyle
                    {
                        Message = message.Message,
                        MessageType = MessageType.OkOnly
                    }
                }));
            }
            if (customer == null)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse
                {
                    Error = new MessageStyle
                    {
                        Message = Resource.CustomerNotExists,
                        MessageType = MessageType.OkOnly
                    }
                }));
            }

            string              userCode;
            ErrorMessage        error = new ErrorMessage();
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            var sale = _saleManager.SetCustomer(customer.Code, model.SaleNumber, model.TillNumber,
                                                userCode, 0, model.CardNumber, out error);

            if (!string.IsNullOrEmpty(error.MessageStyle.Message))
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse
                {
                    Error = error.MessageStyle
                }));
            }
            if (sale != null)
            {
                var editLines       = _saleManager.CheckEditOptions(sale.Sale_Lines, userCode);
                var enableButtons   = _saleManager.EnableCashButton(sale, userCode);
                var userCanWriteOff = _saleManager.EnableWriteOffButton(userCode);
                var saleModel       = SaleMapper.CreateSaleModel(sale, editLines, enableButtons, userCanWriteOff);
            }

            var customerModel = GetLoyaltyCustomerResponseModel(customer);

            _performancelog.Debug($"End,CustomerController,GetCustomerByCard,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

            return(Request.CreateResponse(HttpStatusCode.OK, customerModel));
        }