public static ApiResponseStatus Update(Registration dataset, string updatedBy) { try { updatedBy = updatedBy?.ToLower() ?? ""; string id = dataset.datasetId; if (string.IsNullOrEmpty(id)) { return(ApiResponseStatus.DatasetNotFound); } var oldReg = DataSetDB.Instance.GetRegistration(id); if (oldReg == null) { return(ApiResponseStatus.DatasetNotFound); } var oldRegAuditable = oldReg.ToAuditJson(); if (string.IsNullOrEmpty(oldReg.createdBy)) { oldReg.createdBy = updatedBy; //fix for old datasets without createdBy } using (System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient()) { var m = new System.Net.Mail.MailMessage() { From = new System.Net.Mail.MailAddress("*****@*****.**"), Subject = "update DATASET registrace od " + updatedBy, IsBodyHtml = false, Body = Newtonsoft.Json.JsonConvert.SerializeObject(dataset) }; m.BodyEncoding = System.Text.Encoding.UTF8; m.SubjectEncoding = System.Text.Encoding.UTF8; m.To.Add("*****@*****.**"); try { smtp.Send(m); } catch (Exception) { } } //use everything from newReg, instead of jsonSchema, datasetId //update object dataset.jsonSchema = oldReg.jsonSchema; dataset.datasetId = oldReg.datasetId; dataset.created = DateTime.Now; //pokud se lisi autor (byl pri updatu zmodifikovan), muze to udelat pouze superUser nebo orig autor if (dataset.createdBy != oldReg.createdBy) { if (!SuperUsers.Contains(updatedBy) && updatedBy != oldReg.createdBy) { return(ApiResponseStatus.DatasetNoPermision); } } if (updatedBy != oldReg?.createdBy?.ToLower()) { if (!SuperUsers.Contains(updatedBy)) { dataset.createdBy = updatedBy; //pokud updatovano nekym jinym nez autorem (a je mozne to modifikovat), pak createdBy se zmeni na autora. Pokud } } if (dataset.searchResultTemplate != null && !string.IsNullOrEmpty(dataset.searchResultTemplate?.body)) { var errors = dataset.searchResultTemplate.GetTemplateErrors(); if (errors.Count > 0) { var err = ApiResponseStatus.DatasetSearchTemplateError; err.error.errorDetail = errors.Aggregate((f, s) => f + "\n" + s); throw new DataSetException(dataset.datasetId, err); } } if (dataset.detailTemplate != null && !string.IsNullOrEmpty(dataset.detailTemplate?.body)) { var errors = dataset.detailTemplate.GetTemplateErrors(); if (errors.Count > 0) { var err = ApiResponseStatus.DatasetDetailTemplateError; err.error.errorDetail = errors.Aggregate((f, s) => f + "\n" + s); throw new DataSetException(dataset.datasetId, err); } } DataSetDB.Instance.AddData(dataset, updatedBy); //HlidacStatu.Web.Framework.TemplateVirtualFileCacheManager.InvalidateTemplateCache(oldReg.datasetId); return(ApiResponseStatus.Valid()); } catch (DataSetException dse) { return(dse.APIResponse); } catch (Exception ex) { HlidacStatu.Util.Consts.Logger.Error("Dataset API", ex); return(ApiResponseStatus.GeneralExceptionError(ex)); } }
public static ApiResponseStatus Create(Registration dataset, string updatedBy, string jsonSchemaInString = null) { try { Registration reg = dataset; if (reg.jsonSchema == null) { reg.jsonSchema = StringToJSchema(jsonSchemaInString).ToString(); } using (System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient()) { var m = new System.Net.Mail.MailMessage() { From = new System.Net.Mail.MailAddress("*****@*****.**"), Subject = "Nova DATASET registrace od " + updatedBy, IsBodyHtml = false, Body = Newtonsoft.Json.JsonConvert.SerializeObject(reg) }; m.BodyEncoding = System.Text.Encoding.UTF8; m.SubjectEncoding = System.Text.Encoding.UTF8; m.To.Add("*****@*****.**"); try { smtp.Send(m); } catch (Exception) { } } reg.created = DateTime.Now; reg.createdBy = updatedBy; reg.NormalizeShortName(); var newreg = HlidacStatu.Lib.Data.External.DataSets.DataSet.RegisterNew(reg, updatedBy); //HlidacStatu.Web.Framework.TemplateVirtualFileCacheManager.InvalidateTemplateCache(reg.datasetId); return(new ApiResponseStatus() { valid = true, value = newreg.datasetId }); } catch (Newtonsoft.Json.JsonSerializationException jex) { var status = ApiResponseStatus.DatasetItemInvalidFormat; status.error.errorDetail = jex.Message; return(status); } catch (DataSetException dse) { return(dse.APIResponse); } catch (Exception ex) { HlidacStatu.Util.Consts.Logger.Error("Dataset API", ex); return(ApiResponseStatus.GeneralExceptionError(ex)); } }
protected DataSetException(string datasetId, ApiResponseStatus apiResp, SerializationInfo info, StreamingContext context) : base(info, context) { this.DatasetId = datasetId; this.APIResponse = apiResp; }
public DataSetException(string datasetId, string message, ApiResponseStatus apiResp, Exception innerException) : base(message, innerException) { this.DatasetId = datasetId; this.APIResponse = apiResp; }
public DataSetException(string datasetId, ApiResponseStatus apiResp) : base() { this.DatasetId = datasetId; this.APIResponse = apiResp; }
public static DataSetException GetExc(string datasetId, int number, string description, string errorDetail = null) { return(new DataSetException(datasetId, ApiResponseStatus.Error(number, description, errorDetail))); }