// Actions

        /// <summary>
        /// Select items
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public JsonResult SelectTmcItem(TmcViewModel model)
        {
            ApplicationPoaRepository poaRepo = new ApplicationPoaRepository(false);
            //if (model.IsSelected)
            //{
            //    poaRepo.AddLimsTmcTemp(new LimsTmcTemp()
            //    {
            //        TmcId = model.Id.Value,
            //        TmcInId = model.TmcInId.Value,
            //        CreatedDate = DateTime.Now
            //    });
            //}
            //else
            //{
            //    poaRepo.DeleteLimsTmcTemp(new LimsTmcTemp()
            //    {
            //        TmcId = model.Id.Value,
            //        TmcInId = model.TmcInId.Value
            //    });
            //}
            var limsTmcTemp = poaRepo.GetLimsTmcTemps(ltt => ltt.TmcId == model.Id.Value && ltt.TmcInId == model.TmcInId.Value)
                              .FirstOrDefault();

            if (limsTmcTemp != null)
            {
                limsTmcTemp.IsSelected = model.IsSelected;
                poaRepo.UpdateLimsTmcTemp(limsTmcTemp);
                poaRepo.Save();
            }

            return(Json(new { IsSuccess = true }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult UpdateTmc([DataSourceRequest] DataSourceRequest request, TmcViewModel model)
        {
            TmcRepository repo = new TmcRepository(false);
            Tmc           tmc  = repo.GetAsQuarable(o => o.Id == model.Id).FirstOrDefault();

            if (tmc != null)
            {
                //tmc.StateType = model.StateType;
                //tmc.Name = model.Name;
                //tmc.Code = model.Code;
                //tmc.Count = model.Count;
                //tmc.CountActual = model.CountRequest.Value;
                //tmc.OwnerEmployeeId = model.OwnerEmployeeId;
                //tmc.Number = model.Number;
                //tmc.CountFact = model.CountRequest.Value;
                //tmc.CountConvert = model.CountRequest.Value;
                //tmc.ExpiryDate = model.ExpiryDate;
                //tmc.ManufactureDate = model.ManufactureDate;
                //tmc.Manufacturer = model.Manufacturer;
                //tmc.MeasureTypeConvertDicId = model.MeasureTypeConvertDicId;
                //tmc.MeasureTypeDicId = model.MeasureTypeDicId;
                //tmc.PackageDicId = model.PackageDicId;
                //tmc.Rack = model.Rack;
                //tmc.Safe = model.Safe;
                //tmc.Serial = model.Serial;
                //tmc.StorageDicId = model.StorageDicId;
                //tmc.TmcTypeDicId = model.TmcTypeDicId;
                //tmc.ReceivingDate = model.ReceivingDate;
                tmc.MeasureTypeDicId = model.MeasureTypeDicId;
            }

            repo.Save();

            if (tmc != null)
            {
                var newDictionary = repo.TvGetAsQuarable(o => o.Id == tmc.Id).First();
                model.MeasureTypeDicValue = newDictionary.MeasureTypeDicValue;

                var appRepo     = new ApplicationPoaRepository(false);
                var limsTmcTemp = appRepo.GetLimsTmcTemps(ltt => ltt.TmcId == tmc.Id && ltt.TmcInId == tmc.TmcInId).FirstOrDefault();
                if (limsTmcTemp != null)
                {
                    limsTmcTemp.CountRequest  = model.CountRequest;
                    limsTmcTemp.CountReceived = model.CounReceived;
                }
                appRepo.Save();
            }
            return(Json(new[] { model }.ToDataSourceResult(request, ModelState)));
        }
        public ActionResult ConfirmAcceptTmc(Guid id, Tmc tmc)
        {
            TmcRepository repo     = new TmcRepository(false);
            var           tmcExist = repo.GetAsQuarable(o => o.Id == id).FirstOrDefault();

            if (tmcExist != null)
            {
                if (tmcExist.StateType == Tmc.TmcStatuses.Accepted)
                {
                    tmcExist.CountFact    += tmc.Count;
                    tmcExist.CountActual  += tmc.CountConvert;
                    tmcExist.CountConvert += tmc.CountConvert;
                }
                else
                {
                    tmcExist.CountFact   = tmc.Count;
                    tmcExist.CountActual = tmcExist.CountConvert = tmc.CountConvert;
                }

                tmcExist.StateType = Tmc.TmcStatuses.Accepted;

                if (tmc.MeasureTypeConvertDicId != null)
                {
                    tmcExist.MeasureTypeConvertDicId = tmc.MeasureTypeConvertDicId;
                }
                else
                {
                    tmcExist.MeasureTypeConvertDicId = tmcExist.MeasureTypeDicId;
                    tmcExist.CountActual             = tmcExist.CountConvert = tmcExist.CountFact = tmc.Count;
                }
                tmcExist.OwnerEmployeeId = UserHelper.GetCurrentEmployee().Id;
                tmcExist.ReceivingDate   = tmc.ReceivingDate ?? DateTime.Now;
                repo.Save();

                ApplicationPoaRepository repository = new ApplicationPoaRepository(false);
                var limsTmcTemp = repository.GetLimsTmcTemps(ltt => ltt.TmcId == tmc.Id && ltt.TmcInId == tmc.TmcInId).FirstOrDefault();
                if (limsTmcTemp != null)
                {
                    limsTmcTemp.CountReceived = tmc.Count;
                }
                repository.Save();
            }

            return(Json(id, JsonRequestBehavior.AllowGet));
        }
        public ActionResult DestroyTmc([DataSourceRequest] DataSourceRequest request, TmcViewModel dictionary)
        {
            TmcRepository            repo    = new TmcRepository(false);
            ApplicationPoaRepository poaRepo = new ApplicationPoaRepository(false);

            if (dictionary != null)
            {
                var limsTmcTemp = poaRepo.GetLimsTmcTemps(ltt => ltt.TmcId == dictionary.Id && ltt.TmcInId == dictionary.TmcInId).FirstOrDefault();
                poaRepo.DeleteLimsTmcTemp(limsTmcTemp);
                poaRepo.Save();

                Tmc d = repo.GetAsQuarable(o => o.Id == dictionary.Id).First();
                repo.Delete(d);
                repo.Save();
            }

            return(Json(new[] { dictionary }.ToDataSourceResult(request, ModelState)));
        }