public async Task <IActionResult> ItemHistories([FromBody] ItemHistoryOptionViewModel Option)
        {
            if (Option != null)
            {
                var HasData = await this.repositoryRequireMaintenance.GetToListAsync(x => x,
                                                                                     x => x.ItemId == Option.ItemId &&
                                                                                     x.RequireStatus != RequireStatus.Cancel,
                                                                                     x => x.OrderByDescending(z => z.RequireDate),
                                                                                     x => x.Include(z => z.ItemMaintenance));

                if (HasData.Any())
                {
                    var MapData = HasData.Select(x => new
                    {
                        Fail = x.Description,
                        Fix  = x.ItemMaintenance == null ? "-" : x.ItemMaintenance.Description,
                        Date = x.RequireDate,
                        ItemMaintenanceId = x.ItemMaintenance == null ? 0 : x.ItemMaintenance.ItemMaintenanceId
                    });

                    return(new JsonResult(MapData, this.DefaultJsonSettings));
                }
            }
            return(BadRequest(new { Error = "Item history not found." }));
        }
        public async Task <IActionResult> ItemHistories([FromBody] ItemHistoryOptionViewModel Option)
        {
            var message = "Data not been found.";

            try
            {
                if (Option != null)
                {
                    /*
                     * var HasData = await this.repositoryRequireMaintenance.GetToListAsync(x => new ItemHistorieViewModel
                     * {
                     *  Fail = x.Description,
                     *  Fix = x.ItemMaintenance == null ? "-" : x.ItemMaintenance.Description,
                     *  Date = x.RequireDate,
                     *  Remark = x.ItemMaintenance == null ? "-" : x.ItemMaintenance.Remark,
                     *  ItemMaintenanceId = x.ItemMaintenance == null ? 0 : x.ItemMaintenance.ItemMaintenanceId
                     * },
                     *                          x => x.ItemId == Option.ItemId &&
                     *                               x.RequireStatus != RequireStatus.Cancel,
                     *                          x => x.OrderByDescending(z => z.RequireDate),
                     *                          x => x.Include(z => z.ItemMaintenance));
                     */

                    var sqlCommand = new SqlCommandViewModel()
                    {
                        SelectCommand = $@"[R].[Description] AS [Fail]
                                        ,[M].[Description] AS [Fix]
                                        ,[R].[RequireDate] AS [Date]
                                        ,[R].[RequireDateTime]
                                        ,[M].[Remark]
                                        ,[M].[ItemMaintenanceId]",
                        FromCommand   = $@"[dbo].[RequireMaintenance] AS [R]
                                    LEFT OUTER JOIN [dbo].[ItemMaintenance] AS [M]
                                        ON [M].[RequireMaintenanceId] = [R].[RequireMaintenanceId]",
                        WhereCommand  = $@"[R].[ItemId] = {Option.ItemId} AND [R].[RequireStatus] != 4",
                        OrderCommand  = "[R].[RequireDate] DESC"
                    };

                    var hasData = await this.dapper.GetListEntites <ItemHistorieViewModel>(sqlCommand);

                    if (hasData.Any())
                    {
                        return(new JsonResult(hasData, this.DefaultJsonSettings));
                    }
                }
            }
            catch (Exception ex)
            {
                message = $"Has error {ex.ToString()}";
            }
            return(BadRequest(new { message }));
        }