public async Task <IActionResult> saveArchive(int id)
        {
            var user = USERNAME;

            if (id == 0)
            {
                var eArchive = new MailArchiveVM();

                eArchive.classificationList = classificationService.GetQueryable(c => c.IsDeleted == false).GetListItems("ClassificationName", "Id", 0).ToList();
                eArchive.mailTypeList       = mailTypeService.GetQueryable(c => c.IsDeleted == false).GetListItems("MailName", "Id", 0).ToList();
                eArchive.postTypeList       = postTypeService.GetQueryable(c => c.IsDeleted == false).GetListItems("PostName", "Id", 0).ToList();
                eArchive.securityList       = securityService.GetQueryable(c => c.IsDeleted == false).GetListItems("SecurityName", "Id", 0).ToList();
                eArchive.statusList         = statusService.GetQueryable(c => c.IsDeleted == false).GetListItems("StatusName", "Id", 0).ToList();


                return(View(eArchive));
            }
            else
            {
                var mailArchive   = mailArchiveService.getMailArchiveById(id);
                var mailArchivevm = mapper.Map <MailArchiveVM>(mailArchive);

                mailArchivevm.classificationList = await classificationService.GetQueryable(c => c.IsDeleted == false).Select(x => new SelectListItem
                {
                    Text  = x.ClassificationName,
                    Value = x.Id.ToString()
                }).ToListAsync();

                mailArchivevm.mailTypeList = await mailTypeService.GetQueryable(c => c.IsDeleted == false)
                                             .Select(x => new SelectListItem
                {
                    Text  = x.MailName,
                    Value = x.Id.ToString()
                }).ToListAsync();

                mailArchivevm.postTypeList = postTypeService.GetQueryable(c => c.IsDeleted == false).GetListItems("PostName", "Id", 0).ToList();
                mailArchivevm.securityList = securityService.GetQueryable(c => c.IsDeleted == false).GetListItems("SecurityName", "Id", 0).ToList();
                mailArchivevm.statusList   = statusService.GetQueryable(c => c.IsDeleted == false).GetListItems("StatusName", "Id", 0).ToList();


                return(View(mailArchivevm));
            }
        }
        public async Task <JsonResult> saveArchive(MailArchiveVM model, string user, int UserWorkPlace)
        {
            var userName = accessor.HttpContext.User.Identity.Name;

            model.FK_StatusId = 1;
            var eArchive = new MailArchiveVM {
                classificationList = classificationService.GetQueryable(c => c.IsDeleted == false).GetListItems("ClassificationName", "Id", 0).ToList(),
                mailTypeList       = mailTypeService.GetQueryable(c => c.IsDeleted == false).GetListItems("MailName", "Id", 0).ToList(),
                postTypeList       = postTypeService.GetQueryable(c => c.IsDeleted == false).GetListItems("PostName", "Id", 0).ToList(),
                securityList       = securityService.GetQueryable(c => c.IsDeleted == false).GetListItems("SecurityName", "Id", 0).ToList(),
                statusList         = statusService.GetQueryable(c => c.IsDeleted == false).GetListItems("StatusName", "Id", 0).ToList(),
            };

            //model.FK_StatusId = 2; /// هذي انت انسيتها في الفيو

            if (model.ID == 0)
            {
                if (ModelState.IsValid & !string.IsNullOrEmpty(model.ScannedFiles))
                {
                    if (await mailArchiveService.CheckIfArchivceNumberExist(model.MailId))
                    {
                        return(Json(new
                        {
                            status = JsonStatus.Exist,
                            link = "تنبيه",
                            color = NotificationColor.warning.ToString().ToLower(),
                            msg = "هذا الرقم موجود مسبقا  ",
                        }));
                    }
                    model.InsertDate      = DateTime.UtcNow;
                    model.InsertUser      = USER_NAME.UserName;
                    model.UserWorkPlaceID = USER_NAME.WorkPlace.Id;


                    model.Year = DateTime.UtcNow.Year.ToString();
                    var newModel = mapper.Map <MailArchive>(model);

                    //try
                    //{

                    var getByteForFiles = default(byte[]);
                    if (model.ScannedFiles != null)
                    {
                        var stringTOArray = model.ScannedFiles.Split("|");
                        getByteForFiles = GetStream(stringTOArray);
                    }

                    ImageArchive imageArchiveVM = new ImageArchive
                    {
                        Id          = 0,
                        Name        = $"{ Guid.NewGuid().ToString()}.PDF",
                        ContentMail = getByteForFiles,
                        Extension   = ".PDF",
                        Type        = "application/pdf"
                    };

                    newModel.imageArchives = new List <ImageArchive> {
                        imageArchiveVM
                    };
                    var result = await mailArchiveService.AddAndLogAsync(newModel, USERNAME);

                    if (result > 0)
                    {
                        return(Json(new
                        {
                            status = JsonStatus.Success,
                            link = "جيد",
                            color = NotificationColor.success.ToString().ToLower(),
                            msg = "تم الحفظ بنجاح",
                            ObjectID = newModel.ID
                        }));
                    }
                    else
                    {
                        return(Json(new
                        {
                            status = JsonStatus.Error,
                            link = "يوجد خطا",
                            color = NotificationColor.error.ToString().ToLower(),
                            msg = "يوجد خطا في عملية الحفظ",
                            ObjectID = newModel.ID,
                        }));
                    }
                    //}
                    //catch (Exception)
                    //{

                    //    return Json(new
                    //    {
                    //        status = JsonStatus.Error,
                    //        link = "يوجد خطا",
                    //        color = NotificationColor.error.ToString().ToLower(),
                    //        msg = "يوجد خطا في عملية الحفظ",
                    //        ObjectID = newModel.ID,
                    //    });
                    //    throw;
                    //}
                }
                return(Json(new
                {
                    status = JsonStatus.Error,
                    link = "",
                    color = NotificationColor.error.ToString().ToLower(),
                    msg = ModelState.Keys.SelectMany(k => ModelState[k].Errors)
                          .Select(m => m.ErrorMessage).ToArray()
                }));
            }
            else
            {
                if (ModelState.IsValid)
                {
                    var getMailArchiveById = await mailArchiveService.GetAsync(m => m.ID == model.ID);

                    var firstMailArchive = getMailArchiveById.FirstOrDefault();

                    firstMailArchive.FK_MailTypeId       = model.FK_MailTypeId;
                    firstMailArchive.FK_ClassificationId = model.FK_ClassificationId;
                    firstMailArchive.FK_PostTypeId       = model.FK_PostTypeId;
                    firstMailArchive.FK_SecurityId       = model.FK_SecurityId;
                    firstMailArchive.FK_StatusId         = model.FK_StatusId;
                    firstMailArchive.FK_FromJehazId      = model.FK_FromJehazId;
                    firstMailArchive.FK_ToJehazId        = model.FK_ToJehazId;
                    firstMailArchive.Topic       = model.Topic;
                    firstMailArchive.Note        = model.Note;
                    firstMailArchive.UpdatedDate = DateTime.UtcNow;
                    firstMailArchive.UpdateUser  = USER_NAME.UserName;


                    firstMailArchive.UserWorkPlaceID = USER_NAME.WorkPlace.Id;

                    var result = await mailArchiveService.UpdateAndLogAsync(firstMailArchive, USERNAME);

                    if (result > 0)
                    {
                        return(Json(new
                        {
                            status = JsonStatus.Success,
                            link = "جيد",
                            color = NotificationColor.success.ToString().ToLower(),
                            msg = "تم الحفظ بنجاح",
                            ObjectID = firstMailArchive.ID
                        }));
                    }
                    else
                    {
                        return(Json(new
                        {
                            status = JsonStatus.Error,
                            link = "يوجد خطا",
                            color = NotificationColor.error.ToString().ToLower(),
                            msg = "يوجد خطا في عملية الحفظ",
                            ObjectID = firstMailArchive.ID,
                        }));
                    }
                }
            }
            return(Json(new
            {
                status = JsonStatus.Error,
                link = "",
                color = NotificationColor.error.ToString().ToLower(),
                msg = ModelState.Keys.SelectMany(k => ModelState[k].Errors)
                      .Select(m => m.ErrorMessage).ToArray()
            }));
        }