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