public List <ImageUpload> GetTodayImage()
        {
            List <ImageUpload> lstImageIndex = new List <ImageUpload>();
            DateTime           date          = DateConverter.GetLocalZoneDate(DateTime.UtcNow);
            List <ImageIndex>  result        = context.ImageIndexes.Where(a => a.CreatedDate.Value.Day == date.Day && a.CreatedDate.Value.Month == date.Month && a.CreatedDate.Value.Year == date.Year).ToList();

            if (result != null && result.Count > 0)
            {
                List <Guid>  lstIndexId = result.Select(s => s.Id).ToList();
                List <Image> lstImage   = context.Images.Where(a => lstIndexId.Contains(a.IndexId) && a.Status == (int)StatusEnum.Active).ToList();
                if (lstImage == null || (lstImage != null && lstImage.Count <= 0))
                {
                    throw new Exception("No result found.");
                }
                else
                {
                    foreach (ImageIndex index in result)
                    {
                        ImageUpload imageUpload = GetImageUpload(lstImage, index);
                        lstImageIndex.Add(imageUpload);
                    }
                }
            }
            return(lstImageIndex);
        }
        public void InsertImage(string file, string fileName, Guid indexId)
        {
            Image image = new Image();

            image.Id          = Guid.NewGuid();
            image.IndexId     = indexId;
            image.Photo       = file;
            image.FileName    = fileName;
            image.Status      = (int)StatusEnum.Active;
            image.CreatedBy   = "";
            image.CreatedDate = DateConverter.GetLocalZoneDate(DateTime.UtcNow);

            context.Images.Add(image);
            context.SaveChanges();
        }
        public Guid UpdateImageIndex(ImageUpload upload, string username)
        {
            ImageIndex image = context.ImageIndexes.FirstOrDefault(a => a.DivisonCode == upload.DivisonCode &&
                                                                   a.DepartmentCode == upload.DepartmentCode &&
                                                                   a.GOCode == upload.GOCode &&
                                                                   a.DeskCode == upload.DeskCode &&
                                                                   a.SubjectCode == upload.SubjectCode &&
                                                                   a.FileCode == upload.FileCode &&
                                                                   a.FileOpenYear == upload.FileOpenYear &&
                                                                   a.LetterNo == upload.LetterNo);

            if (image == null)
            {
                throw new Exception("Document not found to update");
            }

            ImageIndex imageIndex = null;

            if (!upload.IsMeetingMinute && !string.IsNullOrEmpty(upload.MeetingMinute) && !string.IsNullOrEmpty(upload.MinuteYear))
            {
                imageIndex = context.ImageIndexes.FirstOrDefault(a => a.FileOpenYear == upload.MinuteYear && a.LetterNo == upload.MeetingMinute && a.IsMeetingMinute == true);
                if (imageIndex == null)
                {
                    throw new Exception($"Meeting not found by {upload.ParentMinute}");
                }
            }

            image.IsMeetingMinute     = upload.IsMeetingMinute;
            image.InformattedLetterNo = upload.InformattedLetterNo;
            image.Subject             = upload.Subject;
            image.UploadedDate        = upload.UploadedDate;
            image.Keyword             = upload.Keyword;
            image.MinuteYear          = upload.MinuteYear;
            image.MeetingMinute       = upload.MeetingMinute;
            if (imageIndex != null)
            {
                image.ParentId = imageIndex.Id;
            }
            image.Status               = (int)StatusEnum.Active;
            image.UpdatedBy            = username;
            image.UpdatedDate          = DateConverter.GetLocalZoneDate(DateTime.UtcNow); //update when host in remote.
            context.Entry(image).State = System.Data.Entity.EntityState.Modified;
            context.SaveChanges();
            //InsertImage(upload, image.Id);
            context.SaveChanges();
            return(image.Id);
        }
        public Guid InsertImageIndex(ImageUpload upload, string username)
        {
            ImageIndex imageIndex = null;

            if (!upload.IsMeetingMinute && !string.IsNullOrEmpty(upload.MeetingMinute) && !string.IsNullOrEmpty(upload.MinuteYear))
            {
                imageIndex = context.ImageIndexes.FirstOrDefault(a => a.FileOpenYear == upload.MinuteYear && a.LetterNo == upload.MeetingMinute && a.IsMeetingMinute == true);
                if (imageIndex == null)
                {
                    throw new Exception($"Meeting minute not found");
                }
            }
            ImageIndex image = new ImageIndex();

            image.Id = Guid.NewGuid();
            image.IsMeetingMinute     = upload.IsMeetingMinute;
            image.InformattedLetterNo = upload.InformattedLetterNo;
            image.Subject             = upload.Subject;
            image.UploadedDate        = upload.UploadedDate;
            image.Keyword             = upload.Keyword;
            image.LetterNo            = upload.LetterNo;
            image.DivisonCode         = upload.DivisonCode;
            image.DepartmentCode      = upload.DepartmentCode;
            image.GOCode        = upload.GOCode;
            image.DeskCode      = upload.DeskCode;
            image.SubjectCode   = upload.SubjectCode;
            image.FileCode      = upload.FileCode;
            image.FileOpenYear  = upload.FileOpenYear;
            image.MinuteYear    = upload.MinuteYear;
            image.MeetingMinute = upload.MeetingMinute;
            if (imageIndex != null)
            {
                image.ParentId = imageIndex.Id;
            }

            image.Status      = (int)StatusEnum.Active;
            image.CreatedBy   = username;
            image.CreatedDate = DateConverter.GetLocalZoneDate(DateTime.UtcNow); //update when host in remote.
            context.ImageIndexes.Add(image);
            context.SaveChanges();
            return(image.Id);
        }
        internal object GetDashboard(string id = "")
        {
            var today           = DateConverter.GetLocalZoneDate(DateTime.UtcNow);
            var lastWeek        = today.AddDays(-7);
            var lastMonth       = today.AddMonths(-1);
            int todayUpload     = 0;
            int lastWeekUpload  = 0;
            int lastMonthUpload = 0;
            int totalUpload     = 0;

            if (string.IsNullOrEmpty(id))
            {
                todayUpload     = context.ImageIndexes.Where(a => a.CreatedDate.Value.Day == today.Day && a.CreatedDate.Value.Month == today.Month && a.CreatedDate.Value.Year == today.Year).Count();
                lastWeekUpload  = context.ImageIndexes.Count(a => a.CreatedDate <= today && a.CreatedDate >= lastWeek);
                lastMonthUpload = context.ImageIndexes.Count(a => a.CreatedDate <= today && a.CreatedDate >= lastMonth);
                totalUpload     = context.ImageIndexes.Count();
            }
            else
            {
                var user = context.AspNetUsers.FirstOrDefault(a => a.Id == id);
                if (user != null)
                {
                    string username = user.UserName;
                    todayUpload     = context.ImageIndexes.Where(a => a.CreatedBy == username && a.CreatedDate.Value.Day == today.Day && a.CreatedDate.Value.Month == today.Month && a.CreatedDate.Value.Year == today.Year).Count();
                    lastWeekUpload  = context.ImageIndexes.Count(a => a.CreatedBy == username && a.CreatedDate <= today && a.CreatedDate >= lastWeek);
                    lastMonthUpload = context.ImageIndexes.Count(a => a.CreatedBy == username && a.CreatedDate <= today && a.CreatedDate >= lastMonth);
                    totalUpload     = context.ImageIndexes.Count(a => a.CreatedBy == username);
                }
                else
                {
                    throw new Exception("User not found");
                }
            }



            return(new { Today = todayUpload, LastWeek = lastWeekUpload, LastMonth = lastMonthUpload, Total = totalUpload });
        }