public async Task <IActionResult> Edit(int id, [Bind("UsageHistoryId,UserId,ToolId,TaskFor,Inspection,Serviceable,CheckoutTime,ExpectedReturn,PromiseReturn")] UsageHistory usageHistory)
        {
            ModelState.Remove("UserId");
            if (ModelState.IsValid)
            {
                try
                {
                    ApplicationUser user = await GetCurrentUserAsync();

                    usageHistory.UserId = user.Id;
                    _context.Update(usageHistory);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!UsageHistoryExists(usageHistory.UsageHistoryId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["ToolId"] = new SelectList(_context.Tools, "ToolId", "Description", usageHistory.ToolId);
            ViewData["UserId"] = new SelectList(_context.ApplicationUsers, "Id", "Id", usageHistory.UserId);
            return(View(usageHistory));
        }
        public async Task <IActionResult> Create(int?id, [Bind("UsageHistoryId,UserId,ToolId,TaskFor,Inspection,Serviceable,CheckoutTime,ExpectedReturn,PromiseReturn")] UsageHistory usageHistory)
        {
            //UsageHistory.UserId = user.Id;
            ModelState.Remove("CheckoutTime");
            ModelState.Remove("PromiseReturn");
            ModelState.Remove("UserId");

            if (ModelState.IsValid)
            {
                ApplicationUser user = await GetCurrentUserAsync();

                var tool = await _context.Tools
                           .FirstOrDefaultAsync(t => t.ToolId == id);

                usageHistory.UserId = user.Id;
                usageHistory.ToolId = tool.ToolId;
                _context.Add(usageHistory);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["ToolId"] = new SelectList(_context.Tools, "ToolId", "Description", usageHistory.ToolId);
            ViewData["UserId"] = new SelectList(_context.ApplicationUsers, "Id", "Id", usageHistory.UserId);
            return(View(usageHistory));
        }
        // GET: UsageHistories/Create
        public async Task <IActionResult> Create(int?id)
        {
            var tool = await _context.Tools
                       .FirstOrDefaultAsync(t => t.ToolId == id);

            var usageHistory = new UsageHistory();

            usageHistory.Tool = tool;


            return(View(usageHistory));
        }
Exemple #4
0
 public bool Remove(string token)
 {
     if (UsageHistory.Remove(token))
     {
         Queue <string> newQueue = new Queue <string>();
         foreach (string workingToken in ExpiryQueue)
         {
             if (workingToken != token)
             {
                 newQueue.Enqueue(workingToken);
             }
         }
         ExpiryQueue = newQueue;
         TokenCount--;
         return(true);
     }
     return(false);
 }
Exemple #5
0
        private async Task ReadEdyAsync(SmartCardConnection connection)
        {
            EDYReader reader = new EDYReader(connection);

            // システムコードを指定してPolling
            await LogMessageAsync("EDYカードをポーリング: ");

            byte[] idm = await reader.Polling();

            if (idm.Length > 0)
            {
                await LogMessageAsync(BitConverter.ToString(idm));

                // ReadWithoutEncryptionでサービスコードを指定してデータ取得

                // 属性情報
                byte[] attributeData = await reader.GetAttribute(idm);
                await LogMessageAsync("属性情報: " + BitConverter.ToString(attributeData));

                // 残額情報
                byte[] balanceData = await reader.GetBalance(idm);
                await LogMessageAsync("残額情報: " + BitConverter.ToString(balanceData));

                // 利用履歴
                // 参考) http://iccard.jennychan.at-ninja.jp/format/edy.html#170F
                UsageHistory result = await reader.GetUsageHistory(idm);
                await LogMessageAsync("利用履歴: " + BitConverter.ToString(result.PacketData));

                if (result.HasData)
                {
                    await LogMessageAsync("■利用履歴の解析結果");
                    await LogMessageAsync("利用区分: 0x" + result.UsageType.ToString("X"));
                    await LogMessageAsync("取引通番: " + result.RunningNumber);
                    await LogMessageAsync("利用日時: " + result.UsedDateTime.ToString("yyyy/MM/dd HH:mm:ss"));
                    await LogMessageAsync("利用金額: " + result.UsedAmount);
                    await LogMessageAsync("残額: " + result.Balance);
                }
            }

            return;
        }
Exemple #6
0
        public void Add(string token)
        {
            if (!UsageHistory.ContainsKey(token))
            {
                UsageHistory[token] = new LinkedList <RecentToken>();
            }
            RecentToken recentToken = new RecentToken();

            recentToken.TimeOfAction = DateTime.UtcNow;
            UsageHistory[token].AddLast(recentToken);
            ExpiryQueue.Enqueue(token);
            TokenCount++;
            // Check if some should be expired
            // Since we're using a linkedlist, removal at head is efficient
            while (TokenCount > TokenCountLimit)
            {
                string tokenToRemove = ExpiryQueue.Dequeue();
                UsageHistory[tokenToRemove].RemoveFirst();
                TokenCount--;
            }
        }
        private async Task <bool> WasCreatedByUser(UsageHistory usageHistory)
        {
            var user = await GetUserAsync();

            return(usageHistory.UserId == user.Id);
        }