Esempio n. 1
0
        public HttpResponseMessage WriteOff([FromBody] WriteOffModel model)
        {
            var dateStart = DateTime.Now;

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

            ErrorMessage        error;
            string              userCode;
            int                 registerNumber;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            var fs = _suspendedSaleManger.WriteOff(userCode, model.SaleNumber, model.TillNumber,
                                                   model.WriteOffReason, out error, out registerNumber);

            if (!string.IsNullOrEmpty(error.MessageStyle.Message))
            {
                return(Request.CreateResponse(error.StatusCode,
                                              new ErrorResponse
                {
                    Error = error.MessageStyle,
                }));
            }
            var newSale   = _saleManager.InitializeSale(model.TillNumber, registerNumber, userCode, out error);
            var saleModel = new NewSale
            {
                TillNumber = newSale.TillNumber,
                SaleNumber = newSale.Sale_Num,
                Customer   = newSale.Customer.Name
            };

            _performancelog.Debug($"End,SaleController,WriteOff,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
            try
            {
                var writeOffReceipt = new ReportModel
                {
                    ReportName    = fs.ReportName,
                    ReportContent = fs.ReportContent
                };
                return(Request.CreateResponse(HttpStatusCode.OK, new WriteOffResponseModel
                {
                    NewSale = saleModel,
                    WriteOffReceipt = writeOffReceipt,
                    CustomerDisplay = newSale.CustomerDisplay
                }));
            }
            catch
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, new ErrorResponse
                {
                    Error = new MessageStyle {
                        Message = Resource.Error, MessageType = 0
                    }
                }));
            }
        }
Esempio n. 2
0
        public async Task <IHttpActionResult> WriteOffTool([FromBody] WriteOffModel data)
        {
            Code    status   = default(Code);
            dynamic response = null;

            if (data.count > 0)
            {
                int?userID = UserSessionState.UserID(data.token);
                if (userID.HasValue)
                {
                    var allTools = store
                                   .Tools
                                   .Where(t => (!t.IsDeleted.HasValue || (t.IsDeleted.HasValue && !t.IsDeleted.Value)) &&
                                          !t.Category.IsDeleted &&
                                          t.ToolID == data.id)
                                   .Select(t => t.Count)
                                   .ToList();
                    var all        = allTools.Count > 0 ? allTools.Sum() : 0;
                    int inuseCount = Math.Abs(ToolsHelper.ToolStatByToolID(store, data.id));
                    if (data.count <= all - inuseCount)
                    {
                        store
                        .WriteOffTools
                        .Add(new WriteOffTool()
                        {
                            ToolID       = data.id,
                            WorkerID     = store.Users.FirstOrDefault(u => u.WorkerID == userID.Value).WorkerID,
                            Count        = data.count,
                            Comment      = data.comment,
                            WriteOffTime = DateTimeOffset.UtcNow.DateTime
                        });
                        store.Audits.Add(new Audit()
                        {
                            Action       = (int)ToolAction.WriteOff,
                            Count        = data.count,
                            Readed       = false,
                            ToolID       = data.id,
                            WorkerID     = store.Users.FirstOrDefault(u => u.WorkerID == userID.Value).WorkerID,
                            CreationDate = DateTimeOffset.UtcNow.DateTime,
                        });
                        var tool = store
                                   .Tools
                                   .FirstOrDefault(t => t.ToolID == data.id);
                        if (tool != null)
                        {
                            response = tool.Count -= data.count;
                            store.SaveChanges();
                        }
                        else
                        {
                            status = Code.NotFound;
                        }
                    }
                    else
                    {
                        status = Code.OperationFailed;
                    }
                }
                else
                {
                    status = Code.AuthRequired;
                }
            }
            return(Ok(ApiResponseManager.CreateResponse(new Status(status), response)));
        }