Пример #1
0
        /// <summary>
        /// Revoke a claim given a claimID
        /// </summary>
        /// <param name="args">claimID (string)</param>
        private static object[] RevokeClaim(params object[] args)
        {
            if (args.Length != 1)
            {
                return(Result(false, "Incorrect number of parameters"));
            }
            if (!Runtime.CheckWitness(OWNER))
            {
                return(Result(false, "Only SmartContract owner can call this operation"));
            }

            string id = (string)args[0];

            StorageMap  claims = Storage.CurrentContext.CreateMap(CLAIMS_MAP);
            ClaimStatus status = ByteArray2ClaimStatus(claims.Get(id));

            if (status == ClaimStatus.Nonexistent)
            {
                return(Result(false, "Claim does not exist"));
            }
            if (status == ClaimStatus.Revoked)
            {
                return(Result(true, true));
            }

            claims.Put(id, ClaimStatus2ByteArray(ClaimStatus.Revoked));

            return(Result(true, true));
        }
Пример #2
0
        public async Task <IActionResult> Edit(Guid id, [Bind("ID,IsUpdatable,Name")] ClaimStatus claimStatus)
        {
            if (id != claimStatus.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(claimStatus);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ClaimStatusExists(claimStatus.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction("Index"));
            }
            return(View(claimStatus));
        }
Пример #3
0
 public static void Create(ClaimStatus model)
 {
     using (DataContext db = new DataContext())
     {
         db.ClaimStatuies.Add(model);
         db.SaveChanges();
     }
 }
Пример #4
0
 private void AddClaimStatuses(DataContext context)
 {
     foreach (var item in ClaimStatusList)
     {
         var claimStatus = new ClaimStatus {
             Name = item
         };
         context.ClaimStatuses.Add(claimStatus);
     }
 }
Пример #5
0
        public async Task <IActionResult> Create([Bind("ID,IsUpdatable,Name")] ClaimStatus claimStatus)
        {
            if (ModelState.IsValid)
            {
                claimStatus.ID = Guid.NewGuid();
                _context.Add(claimStatus);
                await _context.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(View(claimStatus));
        }
Пример #6
0
        public  void Install() {
            CreateExpenseItemStatus(ExpenseItemStatus.NEW_COMPLETE);
            CreateExpenseItemStatus(ExpenseItemStatus.NEW_INCOMPLETE);
            CreateExpenseItemStatus(ExpenseItemStatus.REJECTED);
            CreateExpenseItemStatus(ExpenseItemStatus.APPROVED);
            CreateExpenseItemStatus(ExpenseItemStatus.QUERIED);

            NEW_CLAIM = CreateClaimStatus(ClaimStatus.NEW_STATUS);
            SUBMITTED = CreateClaimStatus(ClaimStatus.SUBMITTED);
            RETURNED = CreateClaimStatus(ClaimStatus.RETURNED);
            PAID = CreateClaimStatus(ClaimStatus.PAID);
        }
Пример #7
0
        /// <summary>
        /// Check if claim is revoked
        /// </summary>
        /// <param name="args">claimID (string)</param>
        private static bool IsValidClaim(params object[] args)
        {
            if (args.Length != 1)
            {
                return(false);
            }
            string id = (string)args[0];

            StorageMap  claims = Storage.CurrentContext.CreateMap(CLAIMS_MAP);
            ClaimStatus status = ByteArray2ClaimStatus(claims.Get(id));

            return(status == ClaimStatus.Valid);
        }
        public void Install()
        {
            CreateExpenseItemStatus(ExpenseItemStatus.NEW_COMPLETE);
            CreateExpenseItemStatus(ExpenseItemStatus.NEW_INCOMPLETE);
            CreateExpenseItemStatus(ExpenseItemStatus.REJECTED);
            CreateExpenseItemStatus(ExpenseItemStatus.APPROVED);
            CreateExpenseItemStatus(ExpenseItemStatus.QUERIED);

            NEW_CLAIM = CreateClaimStatus(ClaimStatus.NEW_STATUS);
            SUBMITTED = CreateClaimStatus(ClaimStatus.SUBMITTED);
            RETURNED  = CreateClaimStatus(ClaimStatus.RETURNED);
            PAID      = CreateClaimStatus(ClaimStatus.PAID);
        }
Пример #9
0
        /// <summary>
        /// Inject a claim into the smart contract
        /// </summary>
        /// <param name="id">claim ID</param>
        public static bool InjectClaim(string id)
        {
            if (!IsCalledByAdmin())
            {
                throw new Exception("Only SmartContract admin can call this operation");
            }

            ClaimStatus status = ByteArray2ClaimStatus((byte[])Claims.Get(id));

            if (status != ClaimStatus.Nonexistent)
            {
                throw new Exception("Claim already exists");
            }

            Claims.Put(id, (ByteString)ClaimStatus2ByteArray(ClaimStatus.Valid));

            return(true);
        }
Пример #10
0
        public ActionResult ClaimDetails(string exitNo)
        {
            var    user            = context.Users.Where(x => x.UserName == User.Identity.Name).FirstOrDefault();
            string SchemeName      = PensionSetup.GetSchemeNameAsync(user.SponsorNumber);
            ClaimStatus_Service cs = new ClaimStatus_Service();

            cs.Url = "http://" + PensionSetup.ServerName + ":" +
                     PensionSetup.ServerPort + "/" +
                     PensionSetup.ServerInstance + "/WS/" +
                     SchemeName + "/Page/ClaimStatus";
            cs.UseDefaultCredentials = false;
            cs.Credentials           = new NetworkCredential(PensionSetup.SoapUsername, PensionSetup.SoapPassword);
            ClaimStatus claims = cs.Read(exitNo);

            var jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
            var json           = jsonSerializer.Serialize(claims);

            return(Json(json, JsonRequestBehavior.AllowGet));
        }
Пример #11
0
        public static string ViewString(this ClaimStatus type)
        {
            string result = "";

            switch (type)
            {
            case ClaimStatus.WaitForDocument:
                result = "Изчакване на документи";
                break;

            case ClaimStatus.WaitForAttorny:
                result = "Изчакване на пълномощно";
                break;

            case ClaimStatus.Pending:
                result = "Не потвърдена";
                break;

            case ClaimStatus.Accepted:
                result = "Приета";
                break;

            case ClaimStatus.InProgress:
                result = "В прогрес";
                break;

            case ClaimStatus.Compleeted:
                result = "Приключена успешно";
                break;

            case ClaimStatus.Rejected:
                result = "Отхвърлена";
                break;

            default:
                result = "";
                break;
            }

            return(result);
        }
Пример #12
0
        /// <summary>
        /// Revoke a claim given a claimID
        /// </summary>
        /// <param name="id">claim ID</param>
        public static bool RevokeClaim(string id)
        {
            if (!IsCalledByAdmin())
            {
                throw new Exception("Only SmartContract admin can call this operation");
            }

            ClaimStatus status = ByteArray2ClaimStatus((byte[])Claims.Get(id));

            if (status == ClaimStatus.Nonexistent)
            {
                throw new Exception("Claim does not exist");
            }
            if (status == ClaimStatus.Revoked)
            {
                return(true);
            }

            Claims.Put(id, (ByteString)ClaimStatus2ByteArray(ClaimStatus.Revoked));
            return(true);
        }
            private IList <Claim> FindClaims(Employee employee, ClaimStatus status, string description)
            {
                IQueryable <Claim> query = Instances <Claim>();

                if (employee != null)
                {
                    query = query.Where(c => c.Claimant.Id == employee.Id);
                }

                if (status != null)
                {
                    query = query.Where(c => c.Status.Id == status.Id);
                }

                if (description != null)
                {
                    query = query.Where(c => c.Description.Contains(description));
                }

                return(query.ToList());
            }
Пример #14
0
        /// <summary>
        /// Check if claim is revoked
        /// </summary>
        /// <param name="id">claim ID (string)</param>
        public static bool IsValidClaim(string id)
        {
            ClaimStatus status = ByteArray2ClaimStatus((byte[])Claims.Get(id));

            return(status == ClaimStatus.Valid);
        }
Пример #15
0
 private void ChangeStatusTo(string title)
 {
     Status = m_claimRepository.FindClaimStatus(title);
 }
Пример #16
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SiteList" /> class.
 /// </summary>
 /// <param name="id">id.</param>
 /// <param name="description">description.</param>
 /// <param name="title">title.</param>
 /// <param name="url">url.</param>
 /// <param name="department">department.</param>
 /// <param name="policyName">policyName.</param>
 /// <param name="policyId">policyId.</param>
 /// <param name="template">template.</param>
 /// <param name="owner">owner.</param>
 /// <param name="primaryContact">primaryContact.</param>
 /// <param name="primaryContactDisplayName">primaryContactDisplayName.</param>
 /// <param name="secondaryContact">secondaryContact.</param>
 /// <param name="secondaryContactDisplayName">secondaryContactDisplayName.</param>
 /// <param name="additionalAdministrators">additionalAdministrators.</param>
 /// <param name="additionalAdministratorDisplayNames">additionalAdministratorDisplayNames.</param>
 /// <param name="createdTime">createdTime.</param>
 /// <param name="status">status.</param>
 /// <param name="claimStatus">claimStatus.</param>
 /// <param name="sharing">sharing.</param>
 /// <param name="storageQuota">storageQuota.</param>
 /// <param name="storageUsed">storageUsed.</param>
 /// <param name="inactivityThresholdTime">inactivityThresholdTime.</param>
 /// <param name="leaseExpirationTime">leaseExpirationTime.</param>
 /// <param name="permissionRecertificationStatus">permissionRecertificationStatus.</param>
 /// <param name="metadataRecertificationStatus">metadataRecertificationStatus.</param>
 /// <param name="ownershipRecertificationStatus">ownershipRecertificationStatus.</param>
 /// <param name="geoLocation">geoLocation.</param>
 /// <param name="hub">hub.</param>
 /// <param name="phase">phase.</param>
 /// <param name="metadata">metadata.</param>
 public SiteList(Guid id = default(Guid), string description = default(string), string title = default(string), string url = default(string), string department = default(string), string policyName = default(string), Guid policyId = default(Guid), string template = default(string), string owner = default(string), string primaryContact = default(string), string primaryContactDisplayName = default(string), string secondaryContact = default(string), string secondaryContactDisplayName = default(string), string additionalAdministrators = default(string), string additionalAdministratorDisplayNames = default(string), string createdTime = default(string), SiteStatus status = default(SiteStatus), ClaimStatus claimStatus = default(ClaimStatus), SharingCapabilities sharing = default(SharingCapabilities), long storageQuota = default(long), long storageUsed = default(long), DateTime?inactivityThresholdTime = default(DateTime?), DateTime?leaseExpirationTime = default(DateTime?), RecertificationStatus permissionRecertificationStatus = default(RecertificationStatus), RecertificationStatus metadataRecertificationStatus = default(RecertificationStatus), RecertificationStatus ownershipRecertificationStatus = default(RecertificationStatus), string geoLocation = default(string), string hub = default(string), AutoImportPhase phase = default(AutoImportPhase), List <ReportMetadata> metadata = default(List <ReportMetadata>))
 {
     this.Id                                  = id;
     this.Description                         = description;
     this.Title                               = title;
     this.Url                                 = url;
     this.Department                          = department;
     this.PolicyName                          = policyName;
     this.PolicyId                            = policyId;
     this.Template                            = template;
     this.Owner                               = owner;
     this.PrimaryContact                      = primaryContact;
     this.PrimaryContactDisplayName           = primaryContactDisplayName;
     this.SecondaryContact                    = secondaryContact;
     this.SecondaryContactDisplayName         = secondaryContactDisplayName;
     this.AdditionalAdministrators            = additionalAdministrators;
     this.AdditionalAdministratorDisplayNames = additionalAdministratorDisplayNames;
     this.CreatedTime                         = createdTime;
     this.Status                              = status;
     this.ClaimStatus                         = claimStatus;
     this.Sharing                             = sharing;
     this.StorageQuota                        = storageQuota;
     this.StorageUsed                         = storageUsed;
     this.InactivityThresholdTime             = inactivityThresholdTime;
     this.LeaseExpirationTime                 = leaseExpirationTime;
     this.PermissionRecertificationStatus     = permissionRecertificationStatus;
     this.MetadataRecertificationStatus       = metadataRecertificationStatus;
     this.OwnershipRecertificationStatus      = ownershipRecertificationStatus;
     this.GeoLocation                         = geoLocation;
     this.Hub                                 = hub;
     this.Phase                               = phase;
     this.Metadata                            = metadata;
 }
Пример #17
0
            private IList<Claim> FindClaims(Employee employee, ClaimStatus status, string description) {
                IQueryable<Claim> query =
                    from claim in Instances<Claim>()
                    where (employee == null || claim.Claimant.Equals(employee)) && (status == null || claim.Status.Equals(status)) && (description == null || claim.Description.LastIndexOf(description) >= 0)
                    select claim;

                return query.ToList();
            }
 public virtual IList <Claim> FindMyClaims([Optionally] ClaimStatus status, [Optionally] string description)
 {
     return(FindClaims(MeAsEmployee(), status, description));
 }
Пример #19
0
 /// <summary>
 /// Constructs an identity claim
 /// </summary>
 public IdentityClaim(string name, string value, ClaimStatus status = ClaimStatus.Unknown)
 {
     Name   = name;
     Value  = value;
     Status = status;
 }
Пример #20
0
 private async Task PatchOrderStatus(string orderID, ShippingStatus shippingStatus, ClaimStatus claimStatus)
 {
     var partialOrder = new PartialOrder {
         xp = new { ShippingStatus = shippingStatus, ClaimStatus = claimStatus }
     };
     await _oc.Orders.PatchAsync(OrderDirection.Incoming, orderID, partialOrder);
 }
Пример #21
0
        public ActionResult Create(BookingClaimViewModel model, FormCollection collection)
        {
            try
            {
                //initial working status
                var workingStatusId = WorkingStatusManager.GetAll().Where(m => m.iDefault == (int)Working.Claiming).SingleOrDefault();

                if (model.Product != null)
                {
                    model.Product.Brand = BrandManager.GetById(model.Product.kBrandId);
                }
                model.Product.ProductType = ProductTypeManager.GetById(model.Product.kProductTypeId);

                #region SAVE CUSTOMER
                var insCount = InsuranceManager.GetCountDuplicate(model.Insurance.sInsuranceName.Trim());
                if (insCount.Count <= 0)
                {
                    Insurance insurance = new Insurance
                    {
                        kInsuranceId   = Guid.NewGuid(),
                        sInsuranceName = model.Insurance.sInsuranceName,
                        sAddress1      = model.Insurance.sAddress1,
                        sCity          = model.Insurance.sCity,
                        sZip           = model.Insurance.sZip,
                        sPhone         = model.Insurance.sPhone,
                        sMobile        = model.Insurance.sMobile,
                        sFax           = model.Insurance.sFax,
                        sEmailAddress  = model.Insurance.sEmailAddress
                    };
                    InsuranceManager.Create(insurance);
                    model.Claim.Insurance = insurance;
                }
                else
                {
                    model.Claim.Insurance = insCount[0];
                }
                #endregion

                #region SAVE Brand
                var brandCount = BrandManager.GetCountDuplicate(model.Product.Brand.sBrandName.Trim());
                if (brandCount.Count <= 0)
                {
                    Brand brand = new Brand
                    {
                        kBrandId   = Guid.NewGuid(),
                        sBrandName = model.Product.Brand.sBrandName
                    };
                    BrandManager.Create(brand);
                    model.Product.Brand = brand;
                }
                else
                {
                    model.Product.Brand = brandCount[0];
                }
                #endregion

                #region SAVE Product Type
                var productTypeCount = ProductTypeManager.GetCountDuplicate(model.Product.ProductType.sDescription.Trim());
                if (productTypeCount.Count <= 0)
                {
                    ProductType productType = new ProductType
                    {
                        kProductTypeId = Guid.NewGuid(),
                        sDescription   = model.Product.ProductType.sDescription
                    };
                    ProductTypeManager.Create(productType);
                    model.Product.ProductType = productType;
                }
                else
                {
                    model.Product.ProductType = productTypeCount[0];
                }
                #endregion

                #region SAVE PRODUCT
                var productCount = ProductManager.GetCountDuplicate(
                    model.Product.sProductName.Trim()
                    //, model.Product.Brand.sBrandName.Trim()
                    //, model.Product.ProductType.sDescription.Trim()
                    );
                if (productCount.Count <= 0)
                {
                    Product product = new Product
                    {
                        kProductId     = Guid.NewGuid(),
                        kProductTypeId = productTypeCount.SingleOrDefault().kProductTypeId,
                        kBrandId       = brandCount.SingleOrDefault().kBrandId,
                        sProductName   = model.Product.sProductName,
                        sProductModel  = model.Product.sProductModel
                    };
                    ProductManager.Create(product);
                    model.Product = product;
                }
                else
                {
                    model.Product = productCount[0];
                }
                #endregion

                #region SAVE CLAIM BOOKING
                var repair = RepairManager.GetByRepairNo(model.Claim.sRepairNo ?? "");

                //initial booking first character
                string char_number = CharBooking.C.ToString();

                Claim claim = new Claim();
                claim.dtDateUpdate = DateTime.Now;
                claim.kClaimId     = Guid.NewGuid();
                claim.kStaffId     = (Guid)Membership.GetUser().ProviderUserKey;
                claim.kOwnerId     = repair.kOwnerId ?? (Guid)Membership.GetUser().ProviderUserKey;
                claim.kInsuranceId = model.Claim.Insurance.kInsuranceId;
                claim.kProductId   = model.Product.kProductId;
                claim.sRepairNo    = model.Claim.sRepairNo;
                claim.sClaimNo     = String.Format("{0}{1}", char_number, ClaimNextItemNoManager.GetNextItemNo());
                claim.sSerial      = model.Claim.sSerial;
                if (model.Claim.dtInsuranceExpire != null)
                {
                    claim.dtInsuranceExpire = model.Claim.dtInsuranceExpire.Value.AddYears(-543);
                }


                model.Claim = claim;
                ClaimManager.Create(model.Claim);
                ClaimNextItemNoManager.IncreaseNextItemNo();

                #region also pdate repair side

                repair.dtDateUpdate = DateTime.Now;
                repair.kStaffId     = (Guid)Membership.GetUser().ProviderUserKey;
                RepairManager.Edit(repair);

                #endregion

                #endregion

                #region SAVE REPAIR WORKING STATUS

                ClaimStatus claimStatus = new ClaimStatus
                {
                    kClaimStatusId   = Guid.NewGuid(),
                    kWorkingStatusId = workingStatusId.kWorkingStatusId,
                    kStaffId         = (Guid)Membership.GetUser().ProviderUserKey,
                    kClaimId         = model.Claim.kClaimId
                };
                ClaimStatusManager.Create(claimStatus);

                #endregion

                #region UPDATE REPAIR WORKING STATUS
                if (!String.IsNullOrEmpty(model.Claim.sRepairNo))
                {
                    repair = RepairManager.GetByRepairNo(model.Claim.sRepairNo);

                    RepairStatus repairStatus = new RepairStatus
                    {
                        kRepairStatusId  = Guid.NewGuid(),
                        kWorkingStatusId = workingStatusId.kWorkingStatusId,
                        kStaffId         = (Guid)Membership.GetUser().ProviderUserKey,
                        kRepairId        = repair.kRepairId
                    };
                    RepairStatusManager.Create(repairStatus);
                }
                #endregion



                #region SAVE CAUSE OF CLAIM

                //initial cause
                string keyname;
                string keyvalue;
                int    countvalue = 0;
                for (int i = 0; i <= collection.Count - 1; i++)
                {
                    keyname  = collection.AllKeys[i];
                    keyvalue = collection[i];

                    if (keyname.Contains("cause"))
                    {
                        countvalue++;
                    }
                }

                if (countvalue > 1)
                {
                    model.ClaimCauses = new List <ClaimCause>();
                    for (int i = 1; i <= countvalue / 4; i++)
                    {
                        ClaimCause claimCause = new ClaimCause();
                        claimCause.kClaimCauseId = Guid.NewGuid();
                        claimCause.kClaimId      = model.Claim.kClaimId;
                        claimCause.kStaffId      = (Guid)Membership.GetUser().ProviderUserKey;
                        claimCause.sDescription  = collection[String.Format("cause_description_{0}", i)];
                        claimCause.sNote         = collection[String.Format("cause_note_{0}", i)];

                        if (!String.IsNullOrEmpty(claimCause.sDescription))
                        {
                            int qty = 0;
                            if (int.TryParse(collection[String.Format("cause_qty_{0}", i)], out qty))
                            {
                                claimCause.iQty = qty;
                            }

                            Decimal price = 0;
                            if (Decimal.TryParse(collection[String.Format("cause_price_{0}", i)], out price))
                            {
                                claimCause.dPrice = price;
                            }

                            model.ClaimCauses.Add(claimCause);
                            ClaimCourseManager.Create(claimCause);
                        }
                    }
                }

                if (model.ClaimCauses != null)
                {
                    foreach (var item in model.ClaimCauses)
                    {
                        var causeCount = CauseManager.GetCountDuplicate(item.sDescription.Trim());
                        if (causeCount <= 0)
                        {
                            Cause cause = new Cause
                            {
                                kCauseId     = Guid.NewGuid(),
                                sDescription = item.sDescription.Trim()
                            };
                            CauseManager.Create(cause);
                        }
                    }
                }
                #endregion
            }
            catch (Exception ex)
            {
                return(RedirectToAction("Error", "Home"));
            }

            Claim model2 = ClaimManager.GetById(model.Claim.kClaimId);

            //create remind for history
            RemindHistory remind = new RemindHistory
            {
                sRemind  = model2.vMessage,
                kStaffId = model2.kStaffId
            };
            RemindHistoryManager.Create(remind);

            var clientName = User.Identity.Name;
            Task.Factory.StartNew(() =>
            {
                var clients = Hub.GetClients <RealTimeJTableDemoHub>();
                clients.RecordCreated(clientName, model2);
            });

            return(RedirectToAction("Index"));
        }
            private IList<Claim> FindClaims(Employee employee, ClaimStatus status, string description) {
                IQueryable<Claim> query = Instances<Claim>();

                if (employee != null) {
                    query = query.Where(c => c.Claimant.Id == employee.Id);
                }

                if (status != null) {
                    query = query.Where(c => c.Status.Id == status.Id);
                }

                if (description != null) {
                    query = query.Where(c => c.Description.Contains(description));
                }

                return query.ToList();
            }
Пример #23
0
 public List<ClaimStatus> LoadClaimStatus()
 {
     var list = new List<ClaimStatus>();
     using (var conn = new SqlConnection(_connectionString))
     {
         var cmd = conn.CreateCommand();
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.CommandText = "LoadClaimStatus";
         conn.Open();
         var rd = cmd.ExecuteReader();
         if (rd.HasRows)
         {
             while (rd.Read())
             {
                 var model = new ClaimStatus()
                 {
                     Id = rd.GetInt32(0),
                     Value = rd.GetString(1)
                 };
                 list.Add(model);
             }
         }
         rd.Dispose();
     }
     return list;
 }
Пример #24
0
 /// <summary>
 /// Helper method to serialize ClaimStatus
 /// </summary>
 /// <param name="value">ClaimStatus</param>
 /// <returns>Serialized ClaimStatus</returns>
 private static byte[] ClaimStatus2ByteArray(ClaimStatus value) => ((BigInteger)(int)value).ToByteArray();
            public virtual IList <Claim> FindMyClaimsByEnumStatus(ClaimStatusEnum eStatus)
            {
                ClaimStatus status = FindClaimStatus(eStatus.ToString());

                return(FindClaims(MeAsEmployee(), status, null));
            }
Пример #26
0
 /// <summary>
 /// Copy constructor
 /// </summary>
 public IdentityClaim(IIdentityClaim other)
 {
     Name   = other.Name;
     Value  = other.Value;
     Status = other.Status;
 }
Пример #27
0
 private void ChangeStatusTo(string title) {
     Status = m_claimRepository.FindClaimStatus(title);
 }
Пример #28
0
        public JsonResult EditClaim(Claim claim_sending, ClaimStatus status_sending)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(Json(new { Result = "ERROR", Message = "Form is not valid! Please correct it and try again." }));
                }

                Repair repair    = null;
                Claim  itemFound = ClaimManager.GetById(claim_sending.kClaimId);
                if (itemFound == null)
                {
                    return(Json(new { Result = "ERROR", Message = "Item Not Found" }));
                }
                if (itemFound.IsComplete == true)
                {
                    return(Json(new { Result = "ERROR", Message = "ปิด job!" }));
                }

                var status = WorkingStatusManager.GetById(status_sending.kWorkingStatusId);
                if (status.iDefault == (int)Working.ConfirmRepair && claim_sending.IsRecieved != true)
                {
                    return(Json(new { Result = "ERROR", Message = "ตรวจรับสินค้า!" }));
                }


                bool isStatusChange = false;
                if (status_sending.kWorkingStatusId != itemFound.kWorkingStatusId)
                {
                    #region update claim status side
                    if (status.iDefault == (int)Working.ConfirmRepair)
                    {
                        status_sending.kStaffId = itemFound.kOwnerId.Value;
                    }
                    else
                    {
                        status_sending.kStaffId = (Guid)Membership.GetUser().ProviderUserKey;
                    }
                    status_sending.dtDateAdd      = DateTime.Now;
                    status_sending.kClaimStatusId = Guid.NewGuid();
                    ClaimStatusManager.Create(status_sending);

                    #endregion

                    #region also update repair status side
                    if (!String.IsNullOrEmpty(itemFound.sRepairNo))
                    {
                        repair = RepairManager.GetByRepairNo(itemFound.sRepairNo);
                        RepairStatus repairStatus = new RepairStatus
                        {
                            kStaffId         = itemFound.kOwnerId.Value,
                            kRepairId        = repair.kRepairId,
                            kWorkingStatusId = status_sending.kWorkingStatusId,
                            kRepairStatusId  = Guid.NewGuid()
                        };
                        RepairStatusManager.Create(repairStatus);
                    }
                    #endregion

                    isStatusChange = true;
                }


                #region update claim
                //assign claim
                itemFound.dtDateUpdate = DateTime.Now;
                itemFound.IsRecieved   = claim_sending.IsRecieved;
                itemFound.IsNoCredit   = claim_sending.IsNoCredit;
                if (isStatusChange)
                {
                    itemFound.kStaffId = itemFound.kOwnerId.Value;
                }
                ClaimManager.Edit(itemFound);
                #endregion

                #region update repair
                if (isStatusChange)
                {
                    if (repair != null)
                    {
                        repair.kStaffId = status_sending.kStaffId;
                    }
                    RepairManager.Edit(repair);
                }
                #endregion

                if (isStatusChange)
                {
                    //create remind for history
                    RemindHistory remind = new RemindHistory
                    {
                        sRemind  = itemFound.vMessage,
                        kStaffId = itemFound.kOwnerId.Value
                    };
                    RemindHistoryManager.Create(remind);

                    var clientName = User.Identity.Name;
                    Task.Factory.StartNew(() =>
                    {
                        var clients = Hub.GetClients <RealTimeJTableDemoHub>();
                        clients.RecordUpdated(clientName, itemFound);
                    });
                }

                return(Json(new { Result = "OK", Records = itemFound }));
            }
            catch (Exception ex)
            {
                return(Json(new { Result = "ERROR", Message = ex.Message }));
            }
        }