public async Task<JsonResult> AddSample(int id, DeviceDetailsViewModel device)
        {
            FARDeviceDetailsDto add = new FARDeviceDetailsDto
            {
                MasterId = id,
                ServiceId = device.ServiceId,
                WaferNo = device.WaferNo,
                SerialNo = device.SerialNo,
                LotNo = device.LotNo,
                MfgPartNo = device.MfgPartNo,
                TechnologyId = device.TechnologyId,
                PackageTypeId = device.PackageTypeId,
                AssemblySiteId = device.AssembliesTypeId,
                FabSiteId = device.FabSiteId,
                DateCode = device.DateCode,
                Quantity = device.Quantity,
                Stage = device.StageId == 1 ? true : false,
                LastUpdatedBy = this.CurrentName,
            };
            var result = await DeviceDetailsRepository.AddDeviceAsync(add);
            if (result != null)
            {
                FARMasterDto master = MasterRepository.Single(id);

                if (device.ServiceId == (int)ServiceType.FULL_FA)//Full Service
                    await AddProcess(result.Id, master.Product, true);

                Response.StatusCode = (int)HttpStatusCode.OK;
                return new JsonResult
                {
                    JsonRequestBehavior = JsonRequestBehavior.AllowGet,
                    Data = new { code = "SV01" }
                };
            }
            else
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return new JsonResult
                {
                    JsonRequestBehavior = JsonRequestBehavior.AllowGet,
                    Data = new { code = "SV02" }
                };
            }
        }
 public async Task<JsonResult> DeleteSample(int id, FARDeviceDetailsDto device)
 {
     var result = await DeviceDetailsRepository.DeleteByAsync(id);
     if (result == Model.SaveResult.SUCCESS)
     {
         Response.StatusCode = (int)HttpStatusCode.OK;
         return new JsonResult
         {
             JsonRequestBehavior = System.Web.Mvc.JsonRequestBehavior.AllowGet,
             Data = new { code = device.MasterId }
         };
     }
     else
     {
         Response.StatusCode = (int)HttpStatusCode.BadRequest;
         return new JsonResult
         {
             JsonRequestBehavior = JsonRequestBehavior.AllowGet,
             Data = new { code = device.MasterId }
         };
         //return View(device);
     }
 }
        /// <summary>
        /// Updates the failure mechanism.
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="userName">Name of the user.</param>
        /// <returns></returns>
        public SaveResult UpdateFailureMechanism(FARDeviceDetailsDto entity, string userName)
        {
            SaveResult result = SaveResult.FAILURE;

            try
            {
                using (FailureAnalysisEntities context = new FailureAnalysisEntities())
                {
                    var device = context.FAR_DeviceDetails.Single(x => x.Id == entity.Id && x.IsDeleted == false);

                    device.MechanismId = entity.MechanismId;
                    device.FailureDetail = entity.FailureDetail;
                    device.LastUpdatedBy = userName;
                    device.LastUpdate = DateTime.Now;

                    context.Entry<FAR_DeviceDetails>(device).State = System.Data.Entity.EntityState.Modified;
                    result = context.SaveChanges() > 0 ? SaveResult.SUCCESS : SaveResult.FAILURE;
                }
            }
            catch (Exception ex)
            {
                _logService.Error(ex.Message, ex);
                result = SaveResult.FAILURE;
            }

            return result;
        }
        /// <summary>
        /// Deletes the asynchronous.
        /// </summary>
        /// <param name="entity">The entity.</param>
        /// <returns></returns>
        public async Task<SaveResult> DeleteAsync(FARDeviceDetailsDto entity)
        {
            SaveResult result = SaveResult.FAILURE;

            try
            {
                using (FailureAnalysisEntities context = new FailureAnalysisEntities())
                {
                    var device = context.FAR_DeviceDetails.Single(x => x.Id == entity.Id && x.IsDeleted == false);
                    device.IsDeleted = true;
                    device.LastUpdate = DateTime.Now;
                    device.LastUpdatedBy = entity.LastUpdatedBy;

                    context.Entry<FAR_DeviceDetails>(device).State = System.Data.Entity.EntityState.Modified;
                    result = await context.SaveChangesAsync() > 0 ? SaveResult.SUCCESS : SaveResult.FAILURE;
                }
            }
            catch (Exception ex)
            {
                _logService.Error(ex.Message, ex);
                result = SaveResult.FAILURE;
            }

            return result;
        }
        public async Task<FARDeviceDetailsDto> AddDeviceAsync(FARDeviceDetailsDto entity)
        {
            FARDeviceDetailsDto result = entity;
            try
            {
                using (FailureAnalysisEntities context = new FailureAnalysisEntities())
                {
                    FAR_DeviceDetails add = context.FAR_DeviceDetails.Create();

                    add.MasterId = entity.MasterId;
                    add.ServiceId = entity.ServiceId;
                    add.WaferNo = entity.WaferNo;
                    add.SerialNo = entity.SerialNo;
                    add.LotNo = entity.LotNo;
                    add.MfgPartNo = entity.MfgPartNo;
                    add.TechnologyId = entity.TechnologyId;
                    add.PackageTypeId = entity.PackageTypeId;
                    add.AssembliesSiteId = entity.AssemblySiteId;
                    add.FabSiteId = entity.FabSiteId;
                    add.DateCode = entity.DateCode;
                    add.Quantity = entity.Quantity;
                    add.Stage = entity.Stage;
                    add.IsDeleted = entity.IsDeleted;
                    add.LastUpdatedBy = entity.LastUpdatedBy;
                    add.LastUpdate = DateTime.Now;

                    context.Entry<FAR_DeviceDetails>(add).State = System.Data.Entity.EntityState.Added;
                    await context.SaveChangesAsync();

                    result.Id = add.Id;
                }
            }
            catch (Exception ex)
            {
                _logService.Error(ex.Message, ex);
                result = null;
            }
            return result;
        }
        /// <summary>
        /// Updates the asynchronous.
        /// </summary>
        /// <param name="entity">The entity.</param>
        /// <returns></returns>
        public async Task<SaveResult> UpdateAsync(FARDeviceDetailsDto entity)
        {
            SaveResult result = SaveResult.FAILURE;

            try
            {
                using (FailureAnalysisEntities context = new FailureAnalysisEntities())
                {
                    var device = context.FAR_DeviceDetails.Single(x => x.Id == entity.Id && x.IsDeleted == false);

                    device.MasterId = entity.MasterId;
                    device.ServiceId = entity.ServiceId;
                    device.WaferNo = entity.WaferNo;
                    device.SerialNo = entity.SerialNo;
                    device.LotNo = entity.LotNo;
                    device.MfgPartNo = entity.MfgPartNo;
                    device.TechnologyId = entity.TechnologyId;
                    device.PackageTypeId = entity.PackageTypeId;
                    device.AssembliesSiteId = entity.AssemblySiteId;
                    device.FabSiteId = entity.FabSiteId;
                    device.DateCode = entity.DateCode;
                    device.Quantity = entity.Quantity;
                    device.Stage = entity.Stage;
                    device.IsDeleted = entity.IsDeleted;
                    device.LastUpdatedBy = entity.LastUpdatedBy;
                    device.LastUpdate = DateTime.Now;

                    context.Entry<FAR_DeviceDetails>(device).State = System.Data.Entity.EntityState.Modified;
                    result = await context.SaveChangesAsync() > 0 ? SaveResult.SUCCESS : SaveResult.FAILURE;
                }
            }
            catch (Exception ex)
            {
                _logService.Error(ex.Message, ex);
                result = SaveResult.FAILURE;
            }

            return result;
        }
        /// <summary>
        /// Finds the save.
        /// </summary>
        /// <param name="DeviceId">The device identifier.</param>
        /// <param name="find">The find.</param>
        /// <returns>JsonResult.</returns>
        public JsonResult FindSave(int DeviceId, FindingViewModel find)
        {
            FARDeviceDetailsDto update = new FARDeviceDetailsDto
            {
                Id = DeviceId,
                MechanismId = find.MechanismId,
                FailureDetail = find.FailureDetail
            };

            var saveResult = DeviceRep.UpdateFailureMechanism(update, this.CurrentName);

            if (saveResult == Model.SaveResult.SUCCESS)
            {
                Response.StatusCode = (int)HttpStatusCode.OK;
                return new JsonResult
                {
                    Data = new { code = "SB01" },
                    JsonRequestBehavior = JsonRequestBehavior.AllowGet
                };
            }
            else
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return new JsonResult
                {
                    Data = new { code = "SB02" },
                    JsonRequestBehavior = JsonRequestBehavior.AllowGet
                };
            }
        }