private ColumnValidationResult ValidateLocalTaxonomyReportFields(LocalReportViewModel report)
        {
            ColumnValidationResult result = new ColumnValidationResult();

            result.EntityId = report.Id;

            result = ValidationField("Id", report.Id, "שדה קוד דיווח הינו שדה חובה", result);

            if (report.SourceId != null)
            {
                result = ValidationField("SourceId ", report.SourceId.Id, "שדה Source Id  הינו שדה חובה", result);
            }
            else
            {
                result.ValidationMessages.Add("שדה Source Id  הינו שדה חובה");
            }

            return(result);
        }
        public ActionResult DeleteLocalReport([DataSourceRequest] DataSourceRequest request, LocalReportViewModel model)
        {
            using (var repository = GetRepository())
            {
                if (model != null && ModelState.IsValid)
                {
                    if (string.IsNullOrWhiteSpace(model.Id))
                    {
                        return(new JsonHttpStatusResult(new { Message = UserMessages.ID_ERROR }, HttpStatusCode.InternalServerError));
                    }

                    if (string.IsNullOrWhiteSpace(model.TaxonomyId))
                    {
                        return(new JsonHttpStatusResult(new { Message = UserMessages.TAXONOMYID_ERROR }, HttpStatusCode.InternalServerError));
                    }

                    if (string.IsNullOrWhiteSpace(model.SourceId.Id))
                    {
                        return(new JsonHttpStatusResult(new { Message = UserMessages.SOURCEID_ERROR }, HttpStatusCode.InternalServerError));
                    }

                    var entity = repository.LocalReportRepository.GetLocalReportsByTaxonomyId(model.TaxonomyId)
                                 .FirstOrDefault(x => x.Id == model.Id);

                    if (entity == null)
                    {
                        return(new JsonHttpStatusResult(new { Message = UserMessages.ROW_NOT_FOUND_ERROR }, HttpStatusCode.InternalServerError));
                    }

                    try
                    {
                        repository.LocalReportRepository.Remove(entity);
                        repository.Commit();
                    }
                    catch (Exception e)
                    {
                        GetLogger().LogException(e, string.Format("DeleteLocalReport({0})", model.TaxonomyId));

                        return(new JsonHttpStatusResult(new { Message = UserMessages.UNKNOWN_ERROR }, HttpStatusCode.InternalServerError));
                    }
                }
            }

            return(Json(new[] { model }.ToDataSourceResult(request, ModelState)));
        }
        public ActionResult AddLocalReport([DataSourceRequest] DataSourceRequest request, LocalReportViewModel model)
        {
            using (var repository = GetRepository())
            {
                if (model != null && ModelState.IsValid)
                {
                    if (!IsLocalReportUniqueId(model.TaxonomyId, model.Id))
                    {
                        return(new JsonHttpStatusResult(new { Message = UserMessages.TAXSONOMY_IS_NOT_UNIQ_ID }, HttpStatusCode.InternalServerError));
                    }

                    var result = ValidateLocalTaxonomyReportFields(model);

                    if (result.ValidationMessages.Count > 0)
                    {
                        return(new JsonHttpStatusResult(new { Message = result.ValidationMessages }, HttpStatusCode.InternalServerError));
                    }

                    var entity = new LocalReportModel()
                    {
                        Currency         = model.Currency,
                        Decimals         = model.Decimals,
                        DecimalDecimals  = model.DecimalDecimals,
                        Description      = model.Description,
                        EntityIdentifier = model.EntityIdentifire.Id,
                        EntitySchema     = model.EntitySchema,
                        EntryUri         = model.EntryUri,
                        FileName         = model.FileName,
                        Id = model.Id,
                        IntegerDecimals  = model.IntegerDecimals,
                        MonetaryDecimals = model.MonetaryDecimals,
                        PeriodType       = model.PeriodType.PeriodType,
                        PureDecimals     = model.PureDecimals,
                        SharesDecimals   = model.SharesDecimals,
                        TaxonomyId       = model.TaxonomyId,
                        TnProcessorId    = model.TnProcessorId,
                        TnRevisionId     = model.TnRevisionId,
                        SourceId         = model.SourceId.Id,
                    };

                    try
                    {
                        repository.LocalReportRepository.Add(entity);
                        repository.Commit();
                    }
                    catch (Exception e)
                    {
                        GetLogger().LogException(e, string.Format("AddLocalReports({0})", entity.TaxonomyId));

                        return(new JsonHttpStatusResult(new { Message = UserMessages.UNKNOWN_ERROR }, HttpStatusCode.InternalServerError));
                    }
                }
            }
            if (model.PeriodType.PeriodType == null)
            {
                model.PeriodType.Description = "";
            }
            if (model.EntityIdentifire.Id == null)
            {
                model.EntityIdentifire.Description = "";
            }

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