public JsonResult CreateOrEdit(Attachment input, AttachmentAssign assign, bool isEdit)
        {
            try
            {
                using (var workScope = new UnitOfWork(new PatientManagementDbContext()))
                {
                    if (isEdit)
                    {
                        var elm = workScope.Attachments.Get(input.Id);

                        if (elm != null) //update
                        {
                            input.CreatedBy    = elm.CreatedBy;
                            input.CreatedDate  = elm.CreatedDate;
                            input.ModifiedDate = DateTime.Now;
                            input.ModifiedBy   = GetCurrentUser().FullName;
                            elm = input;
                            workScope.Attachments.Put(elm, elm.Id);
                            workScope.Complete();

                            return(Json(new { status = true, mess = "Cập nhập thành công " }));
                        }
                        else
                        {
                            return(Json(new { status = false, mess = "Không tồn tại " + KeyElement }));
                        }
                    }
                    else
                    {
                        input.Id           = Guid.NewGuid();
                        input.CreatedBy    = GetCurrentUser().FullName;
                        input.CreatedDate  = DateTime.Now;
                        input.ModifiedDate = DateTime.Now;
                        input.ModifiedBy   = GetCurrentUser().FullName;

                        workScope.Attachments.Add(input);
                        workScope.Complete();

                        workScope.AttachmentAssigns.Add(new AttachmentAssign
                        {
                            Id             = Guid.NewGuid(),
                            DetailRecordId = assign.DetailRecordId,
                            AttachmentId   = input.Id
                        });

                        workScope.Complete();
                        return(Json(new { status = true, mess = "Thêm thành công " + KeyElement }));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Json(new { status = false, mess = "Có lỗi xảy ra: " + ex.Message }));
            }
        }
        public JsonResult CreateOrEdit(MedicalSupply input, AttachmentAssign assign, bool isEdit)
        {
            try
            {
                if (input.Amount <= 0)
                {
                    return(Json(new { status = false, mess = "Lỗi số lượng" }));
                }
                using (var workScope = new UnitOfWork(new PatientManagementDbContext()))
                {
                    var item            = workScope.Items.FirstOrDefault(x => x.Id == input.ItemId);
                    var medicalSupplies = workScope.MedicalSupplies.Query(x => x.ItemId == input.ItemId).ToList();

                    var hireCount         = medicalSupplies.Where(x => x.Status == StatusMedical.Hired).Sum(x => x.Amount);
                    var availabilityCount = medicalSupplies.Where(x => x.Status == StatusMedical.Availability).Sum(x => x.Amount);
                    var expiredCount      = medicalSupplies.Where(x => x.Status == StatusMedical.Expired).Sum(x => x.Amount);
                    var unavailableCount  = medicalSupplies.Where(x => x.Status == StatusMedical.Unavailable).Sum(x => x.Amount);
                    var maintenanceCount  = medicalSupplies.Where(x => x.Status == StatusMedical.Maintenance).Sum(x => x.Amount);

                    var availabilityItem = item.Amount - hireCount - expiredCount - unavailableCount - maintenanceCount;

                    if (availabilityItem < 0)
                    {
                        return(Json(new { status = false, mess = "Lỗi, dữ liệu âm" + KeyElement }));
                    }

                    if (input.Amount > availabilityItem)
                    {
                        return(Json(new { status = false, mess = $"Lỗi, kho đã hết" + KeyElement }));
                    }
                    if (isEdit)
                    {
                        var elm = workScope.MedicalSupplies.Get(input.Id);

                        if (elm != null) //update
                        {
                            elm = input;
                            workScope.MedicalSupplies.Put(elm, elm.Id);
                            workScope.Complete();

                            return(Json(new { status = true, mess = "Cập nhập thành công " }));
                        }
                        else
                        {
                            return(Json(new { status = false, mess = "Không tồn tại " + KeyElement }));
                        }
                    }
                    else
                    {
                        input.Id = Guid.NewGuid();

                        workScope.MedicalSupplies.Add(input);
                        workScope.Complete();

                        return(Json(new { status = true, mess = "Thêm thành công " + KeyElement }));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Json(new { status = false, mess = "Có lỗi xảy ra: " + ex.Message }));
            }
        }