Beispiel #1
0
        public async Task <UserTask> CompleterUserTask(UserTask usertask)
        {
            UsageItem selectedItem = _dbContext.QueryByExpression <UsageItem>(usageItem => usageItem.Id == usertask.UsageItemId).FirstOrDefault();
            TimeSpan  elapsedTime  = TimeSpan.FromSeconds(usertask.ElapsedTimeInSeconds);

            var userNameParts = _currentLoggedInUser.EmailId.Split(new[] { "@" }, StringSplitOptions.RemoveEmptyEntries);
            var userName      = userNameParts[0];

            var newDuration = new Transaction
            {
                ClientId    = usertask.ClientID,
                RequestedBy = usertask.RequestedBy,
                RequestedByWindowsAccount = userName.ToLower(),
                LocationCode       = usertask.LocationCode,
                TransactionNotes   = usertask.Notes,
                TeamMemberComments = usertask.TeamMemberComments,
                ConsumedAtDate     = usertask.StartDateTime.ToUniversalTime().ToString("u"),
                UOM             = selectedItem.UnitOfMeasure,
                DurationHours   = elapsedTime.Hours,
                DurationMinutes = elapsedTime.Minutes,
                DurationSeconds = elapsedTime.Seconds,
                UnitPrice       = selectedItem.UnitPrice,
                UsageItemId     = selectedItem.Id,
            };

            await _restService.Post(RestEndpoint.CreateDuration, newDuration, "Stop or Complete Task",
                                    "Error happend while stopping a task");

            usertask.Status = UserTaskStatus.Completed;
            return(usertask);
        }
        /// <summary>
        /// 新增用法
        /// </summary>
        public void SaveUsageItem()
        {
            try
            {
                UsageItem item = new UsageItem( );
                item.Name            = formView.UsageName;
                item.Unit            = formView.UsageUnit;
                item.Py_Code         = formView.UsagePyCode;
                item.Wb_Code         = formView.UsageWbCode;
                item.PrintLongOrder  = formView.PrintLong;
                item.PrintTempOrder  = formView.PrintTemp;
                item.DeleteBit       = formView.DeleteBit;
                item.AssociatedItems = formView.AssociatedItems;

                ServiceItemController controller = new ServiceItemController( );
                if (controller.ItemNameExists(item))
                {
                    throw new Exception("用法名称【" + item.Name + "】已经存在");
                }

                controller.AddUsageItem(item);
                tbUsagediction = BaseDataReader.GetUsageDictionList( );
            }
            catch (Exception err)
            {
                throw err;
            }
        }
Beispiel #3
0
        /// <summary>
        /// Depletions the interface.
        /// </summary>
        /// <returns>Task.</returns>
        private static async Task DepletionInterface()
        {
            //Only Facility No is required for usage creation
            var usageA = new Usage {
                FacilityNo = "Facility No"
            };
            var usageB = new Usage {
                FacilityNo = "Facility No"
            };
            var usageList = new List <Usage> {
                usageA, usageB
            };

            // Result is list of usage Ids joined by ',' separator
            var usages = PostUsages(usageList).Result.Split(',').ToList();

            var usagePK = Guid.Parse(usages.FirstOrDefault());

            // Usage Id is required for item insert, in this case free-form item will be created
            var usageLineItemA = new UsageItem {
                UsageId = usagePK
            };
            var usageLineItemB = new UsageItem {
                UsageId = usagePK
            };
            var usageLineItemList = new List <UsageItem> {
                usageLineItemA, usageLineItemB
            };

            await PostUsageItems(usageLineItemList);

            // Usage ID and Procedure No are required for usage procedure creation
            var usageProcedureA = new UsageProcedure {
                UsageId = usagePK, ProcedureNo = "ProcedureNo A"
            };
            var usageProcedureB = new UsageProcedure {
                UsageId = usagePK, ProcedureNo = "ProcedureNo B"
            };
            var usageProcedureList = new List <UsageProcedure> {
                usageProcedureA, usageProcedureB
            };

            await PostUsageProcedures(usageProcedureList);

            // Usage Id is required for usage submit
            var usageSubmitA = new Usage {
                UsageId = usagePK
            };
            var usageSubmitB = new Usage {
                UsageId = Guid.Parse(usages[1])
            };
            var usageSubmitList = new List <Usage> {
                usageSubmitA, usageSubmitB
            };

            // Result is list of dictionary <Guid,string>, where Guid is unsubmitted usage Id and message with error description
            // In success case result will be empty
            var result = SubmitUsages(usageSubmitList).Result;
        }
Beispiel #4
0
        public IActionResult UseMachine(UsageItem useItem)
        {
            IActionResult result = Unauthorized();

            try
            {
                result = Ok(_db.LogEquipmentUsage(useItem));
            }
            catch (Exception)
            {
                result = BadRequest(new { Message = "Failed to log machine use" });
            }
            return(result);
        }
        private async void OnCreateTask(UsageItem selectedUsageItem)
        {
            var newTask = await GetNewTask();

            newTask.ClientID      = _selectedClient.ClientId;
            newTask.ClientName    = _selectedClient.ClientName;
            newTask.UsageItemId   = selectedUsageItem.Id;
            newTask.UsageItemName = selectedUsageItem.ItemName;
            newTask.LocationCode  = selectedUsageItem.LocationCode;
            newTask.Status        = UserTaskStatus.Pending;

            this.Publish(new CreateUserTask(newTask));
            this.Publish <NavigateToHomePage>();
        }
Beispiel #6
0
        public JsonResult GetUsage(string SubscriptionId, DateTime?StartDate = null, DateTime?EndDate = null, string Granularity = "daily", bool ShowDetails = false, int Count = 1000)
        {
            if (!StartDate.HasValue)
            {
                StartDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
            }

            if (!EndDate.HasValue)
            {
                EndDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
            }

            if (resellerService.rateCard.Meters == null)
            {
                resellerService.rateCard = crestService.GetRateCard();
            }

            UsageRecord usage = crestService.GetUsage(SubscriptionId, StartDate.Value, EndDate.Value, Granularity, ShowDetails, Count);

            List <UsageItemViewModel> usageItems = new List <UsageItemViewModel>();

            if (ShowDetails)
            {
                foreach (UsageItem i in usage.items.OrderBy(x => x.meter_category).ThenBy(x => x.meter_sub_category).ThenBy(x => x.meter_name))
                {
                    usageItems.Add(new UsageItemViewModel {
                        item = i, meter = GetMeter(i.meter_id)
                    });
                }
            }
            else
            {
                IEnumerable <IGrouping <string, UsageItem> > query = usage.items.OrderBy(x => x.meter_category).ThenBy(x => x.meter_sub_category).ThenBy(x => x.meter_name).GroupBy(i => i.meter_id, i => i);

                foreach (IGrouping <string, UsageItem> itemGroup in query)
                {
                    UsageItem u = itemGroup.FirstOrDefault();
                    u.quantity         = itemGroup.Sum(x => x.quantity);
                    u.usage_start_time = itemGroup.Min(d => d.usage_start_time);
                    u.usage_end_time   = itemGroup.Max(d => d.usage_end_time);
                    usageItems.Add(new UsageItemViewModel {
                        item = u, meter = GetMeter(itemGroup.Key)
                    });
                }
            }

            return(Json(new { Result = "OK", Records = usageItems, TotalRecordCount = usageItems.Count }));
        }
        /// <summary>
        /// 更新用法
        /// </summary>
        public void UpdateUsageItem()
        {
            try
            {
                UsageItem item = new UsageItem( );
                item.ID              = formView.CurrentSelectedUsageID;
                item.Name            = formView.UsageName;
                item.Unit            = formView.UsageUnit;
                item.Py_Code         = formView.UsagePyCode;
                item.Wb_Code         = formView.UsageWbCode;
                item.PrintLongOrder  = formView.PrintLong;
                item.PrintTempOrder  = formView.PrintTemp;
                item.DeleteBit       = formView.DeleteBit;
                item.AssociatedItems = formView.AssociatedItems;

                ServiceItemController controller = new ServiceItemController( );
                if (controller.ItemNameExists(item))
                {
                    throw new Exception("用法名称【" + item.Name + "】已经存在");
                }
                controller.UpdateUsageItem(item);
                DataRow[] drs = BaseDataReader.GetUsageDictionList( ).Select("ID=" + formView.CurrentSelectedUsageID);
                if (drs.Length > 0)
                {
                    DataRow[] drs2 = tbUsagediction.Select("ID=" + formView.CurrentSelectedUsageID);
                    if (drs2.Length > 0)
                    {
                        drs2[0].ItemArray = drs[0].ItemArray;
                    }
                }
                tbUsageFee = BaseDataReader.GetUsageFee( );
            }
            catch (Exception err)
            {
                throw err;
            }
        }
 public void Init()
 {
     instance = new UsageItem();
 }