public override async Task Refresh(LocationCoordinates location, double radius_miles)
        {
            await Task.Delay(500);

            List <ItemReport> item_reports =
                new List <ItemReport>(LocalItemReports);

            EditableLocalItemReports.Clear();
            foreach (ItemReport ir in item_reports)
            {
                EditableLocalItemReports.Add(ir);
            }
        }
Beispiel #2
0
        protected void AddItemReportInOrder(ItemReport ir_to_insert)
        {
            int i = 0;

            foreach (ItemReport ir in EditableLocalItemReports)
            {
                if (ir.ReportTime < ir_to_insert.ReportTime)
                {
                    EditableLocalItemReports.Insert(i, ir_to_insert);
                    return;
                }
                i++;
            }
            EditableLocalItemReports.Add(ir_to_insert);
        }
        public override async Task <int> SubmitItem(ItemReport item_report)
        {
            AssertItemReportValid(item_report);

            if (item_report.ID == 0) // no ID, create new
            {
                int max_or_zero = EditableLocalItemReports.Count() > 0 ?
                                  EditableLocalItemReports.Max(ir => ir.ID) : 0;

                int id = max_or_zero + 1;

                item_report.ID         = id;
                item_report.ReportTime = DateTime.Now;
                item_report.EditTime   = item_report.ReportTime;
                item_report.IsMine     = true;

                //EditableLocalItemReports.Add(item_report);
                AddItemReportInOrder(item_report);
                return(id);
            }
            else
            {
                int i = 0;
                foreach (ItemReport ir in EditableLocalItemReports)
                {
                    if (ir.ID == item_report.ID)
                    {
                        if (!ir.IsMine)
                        {
                            // this should be verified server-side as well
                            throw new Exception(
                                      "You do not have permission to edit this item report.");
                        }
                        item_report.ReportTime = ir.ReportTime;
                        item_report.EditTime   = DateTime.Now;
                        item_report.IsMine     = true;

                        EditableLocalItemReports.RemoveAt(i);
                        EditableLocalItemReports.Insert(i, item_report);
                        return(item_report.ID);
                    }
                    i++;
                }

                throw new InvalidOperationException("No item report" +
                                                    " with this ID exists, so it cannot be edited");
            }
        }