Пример #1
0
            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));
                }
            }
Пример #2
0
            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));
                }
            }
Пример #3
0
 protected DataSetException(string datasetId, ApiResponseStatus apiResp, SerializationInfo info, StreamingContext context)
     : base(info, context)
 {
     this.DatasetId   = datasetId;
     this.APIResponse = apiResp;
 }
Пример #4
0
 public DataSetException(string datasetId, string message, ApiResponseStatus apiResp, Exception innerException)
     : base(message, innerException)
 {
     this.DatasetId   = datasetId;
     this.APIResponse = apiResp;
 }
Пример #5
0
 public DataSetException(string datasetId, ApiResponseStatus apiResp)
     : base()
 {
     this.DatasetId   = datasetId;
     this.APIResponse = apiResp;
 }
Пример #6
0
 public static DataSetException GetExc(string datasetId, int number, string description, string errorDetail = null)
 {
     return(new DataSetException(datasetId, ApiResponseStatus.Error(number, description, errorDetail)));
 }