示例#1
0
        public PersonaVersionEdits EditPersonas(PersonaVersionEdits edits)
        {
            var failed = new PersonaVersionEdits()
            {
                Edits = new Dictionary <string, PersonaVersionEdit>()
            };

            using (var context = new ApplicationDbContext()) {
                using (var transaction = context.Database.BeginTransaction()) {
                    try {
                        foreach (var ed  in edits.Edits)
                        {
                            var result = EditPersonaVersion(context, ed.Key, ed.Value);
                            if (!result)
                            {
                                failed.Edits[ed.Key] = ed.Value;
                            }
                        }
                        context.SaveChanges();
                        transaction.Commit();
                        return(failed);
                    }catch (Exception e) {
                        Console.WriteLine(e.Message);
                        transaction.Rollback();
                        return(edits);
                    }
                }
            }
        }
示例#2
0
        public PersonaVersionEdits EditPersonas(PersonaVersionEdits edits)
        {
            var failed = new PersonaVersionEdits()
            {
                Edits = new Dictionary <string, PersonaVersionEdit>()
            };

            foreach (var etag in edits.Edits)
            {
                switch (etag.Value.Flag)
                {
                case EditType.Update:
                    var current = Personas.Find(x => x.Id == etag.Key);
                    foreach (var edit  in edits.Edits)
                    {
                        if (current.UpdateDate == edit.Value.UpdateDate)
                        {
                            if (edit.Value.Archive.HasValue)
                            {
                                current.Archived = edit.Value.Archive.Value;
                            }
                            if (edit.Value.AddedAdSets != null)
                            {
                                foreach (var item in edit.Value.AddedAdSets)
                                {
                                    current.AdSets.Add(SourceObjects.Find(x => x.Type == SourceObjectType.AdSet && x.SourceId == item));
                                }
                            }
                            if (edit.Value.RemovedAdSets != null)
                            {
                                foreach (var item in edit.Value.RemovedAdSets)
                                {
                                    current.AdSets.RemoveAll(x => x.SourceId == item);
                                }
                            }
                        }
                        else
                        {
                            failed.Edits.Add(edit.Key, edit.Value);
                        }
                    }
                    break;

                default:
                    throw new Exception("Unsupported operation Exception");
                }
            }
            return(failed);
        }
示例#3
0
 public PersonaVersionEdits EditPersonas([FromBody] PersonaVersionEdits edits)
 {
     return(Backend.EditPersonas(edits));
 }