private static void FlatBinstanceToViewModel(this BinViewModel inViewModel)
        {
            FlatBin flat = (FlatBin)inViewModel.Binstance;

            inViewModel.CribLength = flat.CribLength.ToString();
            inViewModel.CribWidth  = flat.CribWidth.ToString();
        }
Exemple #2
0
        //Add New Bin (no photo)
        public BinPage()
        {
            InitializeComponent();

            BindingContext = viewModel = new BinViewModel();

            if (DeviceInfo.DeviceType == DeviceType.Physical)
            {
                TakePhotoAsync();
            }

            YearCollected.Text                = DateTime.Now.ToString("yyyy");
            YearCollected.IsEnabled           = false;
            viewModel.Binstance.YearCollected = YearCollected.Text;

            BinPicFrame.IsVisible     = false;
            CreatedByLabel.IsVisible  = false;
            CreatedByLabel.IsEnabled  = false;
            CreatedBy.IsVisible       = false;
            CreatedBy.IsEnabled       = false;
            ModifiedByLabel.IsVisible = false;
            ModifiedByLabel.IsEnabled = false;
            ModifiedBy.IsVisible      = false;
            ModifiedBy.IsEnabled      = false;

            HasHopperHopperDisable();
            HideCapacityFields();
            HideContentsFields();

            //CropYear.ItemsSource = viewModel.DateRange;
            //SetCropYear();
        }
        public async Task <IActionResult> Edit(Guid id, [Bind("SelectedRackID,Edition,Created,OwnerID,ID,RackIndexX,RackIndexY,RackIndexZ,Name,Description")] BinViewModel binViewModel)
        {
            if (id != binViewModel.ID)
            {
                return(NotFound());
            }

            Bin bin = binViewModel.ToBin();

            if (ModelState.IsValid)
            {
                try
                {
                    bin.IncrementEdition();
                    bin.Rack = await _context.BinRack.FindAsync(binViewModel.SelectedRackID);

                    _context.Update(bin);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!PartsBinExists(bin.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(bin));
        }
        private static void RoundBinstanceToViewModel(this BinViewModel inViewModel)
        {
            RoundBin round = (RoundBin)inViewModel.Binstance;

            if (round.HasHopper.HasValue)
            {
                switch (round.HasHopper)
                {
                case true:
                    inViewModel.HasHopper = 0;
                    break;

                case false:
                    inViewModel.HasHopper = 1;
                    break;

                case null:
                    inViewModel.HasHopper = -1;
                    break;
                }
            }
            inViewModel.Radius       = round.Radius.ToString();
            inViewModel.WallHeight   = round.WallHeight.ToString();
            inViewModel.RoofHeight   = round.RoofHeight.ToString();
            inViewModel.HopperHeight = round.HopperHeight.ToString();
        }
        public static FlatBin MapBinToFlatType(this BinViewModel inViewModel, IBinstance bin)
        {
            FlatBin fbin = new FlatBin(bin);
            double  d;

            try
            {
                fbin.CribLength = double.TryParse(inViewModel.CribLength, out d) ? d : 0.0;
            }
            catch (Exception)
            {
                fbin.CribLength = 0;
            }

            try
            {
                fbin.CribWidth = double.TryParse(inViewModel.CribWidth, out d) ? d : 0;
            }
            catch (Exception)
            {
                fbin.CribLength = 0;
            }

            return(fbin);
        }
Exemple #6
0
        //Add New Bin (photo)
        public BinPage(MediaFile photo)
        {
            InitializeComponent();

            BindingContext                    = viewModel = new BinViewModel();
            Cancel.IsEnabled                  = false;
            YearCollected.Text                = DateTime.Now.ToString("yyyy");
            YearCollected.IsEnabled           = false;
            viewModel.Binstance.YearCollected = YearCollected.Text;

            BinPicFrame.IsVisible     = false;
            BinPic.Source             = ImageSource.FromStream(() => photo.GetStream());
            viewModel.Binstance.Image = photo;
            BinPicFrame.IsVisible     = true;

            CreatedByLabel.IsVisible  = false;
            CreatedByLabel.IsEnabled  = false;
            CreatedBy.IsVisible       = false;
            CreatedBy.IsEnabled       = false;
            ModifiedByLabel.IsVisible = false;
            ModifiedByLabel.IsEnabled = false;
            ModifiedBy.IsVisible      = false;
            ModifiedBy.IsEnabled      = false;

            HasHopperHopperDisable();
            HideCapacityFields();
            HideContentsFields();

            //CropYear.ItemsSource = viewModel.DateRange;
            //SetCropYear();
        }
        private static void PolyBinstanceToViewModel(this BinViewModel inViewModel)
        {
            PolygonBin polygonBin = (PolygonBin)inViewModel.Binstance;

            inViewModel.SideHeight    = polygonBin.SideHeight.ToString();
            inViewModel.SideWidth     = polygonBin.SideWidth.ToString();
            inViewModel.NumberOfSides = polygonBin.NumberOfSides.ToString();
        }
        private static void GravityBinstanceToViewModel(this BinViewModel inViewModel)
        {
            GravityBin gravityBin = (GravityBin)inViewModel.Binstance;

            inViewModel.ChuteLength     = gravityBin.ChuteLength.ToString();
            inViewModel.HopperHeight    = gravityBin.HopperHeight.ToString();
            inViewModel.RectangleHeight = gravityBin.RectangleHeight.ToString();
            inViewModel.RectangleLength = gravityBin.RectangleLength.ToString();
            inViewModel.RectangleWidth  = gravityBin.RectangleWidth.ToString();
        }
 private async void BinSelected(BinViewModel bvm)
 {
     if (!ScaleMode)
     {
         BinView bv = rackview.GetBinView(bvm);
         if (bv is BinView)
         {
             await rackscrollview.ScrollToAsync(bv, ScrollToPosition.Center, true);
         }
     }
 }
        // GET: Bins/Create
        public async Task <IActionResult> Create()
        {
            BinViewModel binViewModel = new BinViewModel();

            binViewModel.RackIndexX = 1;
            binViewModel.RackIndexY = 1;
            binViewModel.RackIndexZ = 1;

            binViewModel.Racks = await _context.BinRack.ToListAsync();

            return(View(binViewModel));
        }
        public static GravityBin MapBinToGravityType(this BinViewModel inViewModel, IBinstance bin)
        {
            GravityBin gbin = new GravityBin(bin);
            double     d;

            try
            {
                gbin.ChuteLength = double.TryParse(inViewModel.ChuteLength, out d) ? d : 0.0;
            }
            catch (Exception)
            {
                gbin.ChuteLength = 0;
            }

            try
            {
                gbin.HopperHeight = double.TryParse(inViewModel.HopperHeight, out d) ? d : 0;
            }
            catch (Exception)
            {
                gbin.HopperHeight = 0;
            }

            try
            {
                gbin.RectangleHeight = double.TryParse(inViewModel.RectangleHeight, out d) ? d : 0.0;
            }
            catch (Exception)
            {
                gbin.RectangleHeight = 0;
            }

            try
            {
                gbin.RectangleLength = double.TryParse(inViewModel.RectangleLength, out d) ? d : 0;
            }
            catch (Exception)
            {
                gbin.RectangleLength = 0;
            }

            try
            {
                gbin.RectangleWidth = double.TryParse(inViewModel.RectangleWidth, out d) ? d : 0.0;
            }
            catch (Exception)
            {
                gbin.RectangleWidth = 0;
            }


            return(gbin);
        }
Exemple #12
0
        public static double CalculateVolume(BinViewModel binViewModel)
        {
            double volume = 0;
            double d;

            //calculate
            //switch (binViewModel.BinType)
            //{
            //    case 0:
            //        double CribLength = double.TryParse(binViewModel.CribLength, out d)? d : 0;
            //        double CribWidth = double.TryParse(binViewModel.CribWidth, out d) ? d : 0;
            //        double GrainHeight = double.TryParse(binViewModel.GrainHeight, out d) ? d : 0;

            //        volume = FlatBinGrainVolume(CribLength, CribWidth, GrainHeight);
            //        break;
            //    case 1:
            //        double RectangleLength = double.TryParse(binViewModel.RectangleLength, out d) ? d : 0;
            //        double RectangleWidth = double.TryParse(binViewModel.RectangleWidth, out d) ? d : 0;
            //        double HopperHeight = double.TryParse(binViewModel.HopperHeight, out d) ? d : 0;
            //        double ChuteLength = double.TryParse(binViewModel.ChuteLength, out d) ? d : 0;
            //        GrainHeight = double.TryParse(binViewModel.GrainHeight, out d) ? d : 0;

            //        volume = GravityBinGrainVolume(RectangleLength, RectangleWidth, HopperHeight, ChuteLength, GrainHeight);
            //        break;
            //    case 2:
            //        double NumberOfSides = double.TryParse(binViewModel.NumberOfSides, out d) ? d : 0;
            //        double SideWidth = double.TryParse(binViewModel.SideWidth, out d) ? d : 0;
            //        GrainHeight = double.TryParse(binViewModel.GrainHeight, out d) ? d : 0;
            //        double GrainConeHeight = double.TryParse(binViewModel.GrainConeHeight, out d) ? d : 0;

            //        volume = PolygonBinGrainVolume(NumberOfSides, SideWidth,
            //                                       GrainHeight, GrainConeHeight);
            //        break;
            //    case 3:
            //        double Radius = double.TryParse(binViewModel.SideWidth, out d) ? d : 0;
            //        double WallHeight = double.TryParse(binViewModel.WallHeight, out d) ? d : 0;
            //        double RoofHeight = double.TryParse(binViewModel.RoofHeight, out d) ? d : 0;
            //        HopperHeight = double.TryParse(binViewModel.HopperHeight, out d) ? d : 0;
            //        GrainHeight = double.TryParse(binViewModel.GrainHeight, out d) ? d : 0;
            //        GrainConeHeight = double.TryParse(binViewModel.GrainConeHeight, out d) ? d : 0;

            //        volume = RoundBinGrainVolume(Radius, WallHeight, RoofHeight,
            //                                     HopperHeight, GrainHeight, GrainConeHeight);
            //        break;
            //    default:
            //        volume = 0;
            //        break;
            //}

            return(volume);
        }
Exemple #13
0
 /// <summary>
 /// For Autoscrolling
 /// </summary>
 /// <param name="bvm"></param>
 /// <returns></returns>
 public BinInEditRackView GetBinView(BinViewModel bvm)
 {
     foreach (Xamarin.Forms.View view in grid.Children)
     {
         if (view is BinInEditRackView)
         {
             BinInEditRackView binview = (BinInEditRackView)view;
             if (binview.Model == bvm)
             {
                 return(binview);
             }
         }
     }
     return(null);
 }
        // GET: Bins/Edit/5
        public async Task <IActionResult> Edit(Guid?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var bin = await _context.PartsBin.FindAsync(id);

            if (bin == null)
            {
                return(NotFound());
            }

            BinViewModel binViewModel = new BinViewModel(bin);

            binViewModel.Racks = await _context.BinRack.ToListAsync();

            return(View(binViewModel));
        }
Exemple #15
0
        //View New Bin
        public BinPage(ArcGISFeature feature)
        {
            InitializeComponent();

            BindingContext   = viewModel = new BinViewModel(feature);
            Cancel.IsEnabled = true;
            Cancel.Text      = "Delete";
            Save.Text        = "Edit";

            BinPicFrame.IsVisible = false;
            SetImage();

            GeneralStack.IsEnabled  = false;
            CapcaityStack.IsEnabled = false;

            //CropYear.ItemsSource = viewModel.DateRange;
            //SetCropYear();
            //CalcVolume();
            //ContentStack.IsEnabled = false;
        }
Exemple #16
0
 private void FillBins()
 {
     for (int i = 1; i <= model.Levels; i++)
     {
         for (int j = 1; j <= model.Sections; j++)
         {
             BinViewModel finded = model.BinsViewModel.BinViewModels.Find(x => x.Level == i && x.Section == j);
             if (finded is BinViewModel)
             {
                 try
                 {
                     BinView bev = new BinView(finded);
                     grid.Children.Add(bev, finded.Section, finded.Section + finded.SectionSpan, finded.Level, finded.Level + finded.LevelSpan);
                 }
                 catch (Exception exp)
                 {
                     System.Diagnostics.Debug.WriteLine(exp.Message);
                 }
             }
         }
     }
 }
 private void FillBins()
 {
     for (int i = 1; i <= model.Levels; i++)
     {
         for (int j = 1; j <= model.Sections; j++)
         {
             BinViewModel finded = model.BinsViewModel.BinViewModels.Find(x => x.Level == i && x.Section == j);
             if (finded is BinViewModel)
             {
                 if (model.CreateMode)
                 {
                     BinView bev = new BinView(finded);
                     grid.Children.Add(bev, finded.Section, finded.Section + finded.SectionSpan, finded.Level, finded.Level + finded.LevelSpan);
                 }
                 else
                 {
                     BinViewInRack bev = new BinViewInRack(finded);
                     grid.Children.Add(bev, finded.Section, finded.Section + finded.SectionSpan, finded.Level, finded.Level + finded.LevelSpan);
                 }
             }
         }
     }
 }
        public async Task <IActionResult> Create([Bind("RackIndexX,RackIndexY,RackIndexZ,Name,Description,SelectedRackID")] BinViewModel binViewModel)
        {
            Bin bin = binViewModel.ToBin();

            if (ModelState.IsValid)
            {
                bin.Rack = await _context.BinRack.FindAsync(binViewModel.SelectedRackID);

                // Assign to the current user
                IdentityUser currUser = await _userManager.GetUserAsync(User);

                if (null != currUser)
                {
                    bin.OwnerID = currUser.Id;
                }

                _context.Add(bin);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }

            return(View(bin));
        }
        public static PolygonBin MapBinToPolyType(this BinViewModel inViewModel, IBinstance bin)
        {
            PolygonBin pbin = new PolygonBin(bin);

            double d;

            try
            {
                pbin.SideHeight = double.TryParse(inViewModel.SideHeight, out d) ? d : 0.0;
            }
            catch (Exception)
            {
                pbin.SideHeight = 0;
            }

            try
            {
                pbin.SideWidth = double.TryParse(inViewModel.SideWidth, out d) ? d : 0;
            }
            catch (Exception)
            {
                pbin.SideWidth = 0;
            }

            try
            {
                int i;
                pbin.NumberOfSides = int.TryParse(inViewModel.NumberOfSides, out i) ? i : 0;
            }
            catch (Exception)
            {
                pbin.NumberOfSides = 0;
            }

            return(pbin);
        }
Exemple #20
0
 private void FillBins()
 {
     for (int i = 1; i <= model.Levels; i++)
     {
         for (int j = 1; j <= model.Sections; j++)
         {
             BinViewModel finded = model.BinsViewModel.BinViewModels.Find(x => x.Level == i && x.Section == j);
             if (finded is BinViewModel)
             {
                 BinView bev = new BinView(finded);
                 grid.Children.Add(bev, finded.Section, finded.Section + finded.SectionSpan, finded.Level, finded.Level + finded.LevelSpan);
             }
             else
             {
                 EmptySpaceViewModel esvm = model.BinsViewModel.EmptySpacesViewModels.Find(x => x.Level == i && x.Section == j);
                 if (esvm is EmptySpaceViewModel)
                 {
                     EmptySpaceViewInRack esvir = new EmptySpaceViewInRack(esvm);
                     grid.Children.Add(esvir, esvm.Section, esvm.Level);
                 }
             }
         }
     }
 }
        public static YTYData MapViewModelToYTY(this BinViewModel inViewModel)
        {
            YTYData yty = new YTYData();

            //yty.Crop = inViewModel.Crop;
            //yty.CropYear = inViewModel.CropYear;

            //double d;
            //yty.GrainHeight = double.TryParse(inViewModel.GrainHeight, out d) ? d : 0;
            //yty.GrainHopperHeight = double.TryParse(inViewModel.GrainHopperHeight, out d) ? d : 0;
            //yty.ConeHeight = double.TryParse(inViewModel.GrainConeHeight, out d) ? d : 0;
            //yty.MoistureOfGrain = double.TryParse(inViewModel.MoisturePercent, out d) ? d : 0;
            //yty.MoistureFactor = double.TryParse(inViewModel.MoistureFactor, out d) ? d : 0;
            //yty.TestWeight = double.TryParse(inViewModel.TestWeight, out d) ? d : 0;
            //yty.PackFactor = double.TryParse(inViewModel.PackFactor, out d) ? d : 0;
            //yty.DockagePercent = double.TryParse(inViewModel.DockagePercent, out d) ? d : 0;
            //yty.DockageFactor = double.TryParse(inViewModel.DockageFactor, out d) ? d : 0;
            //yty.TotalVolume = double.TryParse(inViewModel.GrainVolume, out d) ? d : 0;
            //switch (inViewModel.ConversionFactor)
            //{
            //    case 0:
            //        yty.ConversionFactor = 0.4;
            //        break;
            //    case 1:
            //        yty.ConversionFactor = 0.8;
            //        break;
            //    default:
            //        yty.ConversionFactor = 0;
            //        break;
            //}

            //yty.ShellFactor = double.TryParse(inViewModel.ShellFactor, out d) ? d : 0;
            //yty.TotalDeductionVolume = double.TryParse(inViewModel.TotalDeductionVolume, out d) ? d : 0;
            //yty.Notes = inViewModel.ContentsNotes;
            return(yty);
        }
 public BinView(BinViewModel bvm)
 {
     model          = bvm;
     BindingContext = model;
     InitializeComponent();
 }
        public static async Task <ArcCrudEnum> AddBin(BinViewModel binViewModel)
        {
            IBinstance            bin = binViewModel.Binstance;
            IEnumerable <YTYData> yTY = bin.YTYDatas;

            try
            {
                await _featureTable.LoadAsync();

                var attributes = new Dictionary <string, object>();
                attributes.Add("identifier", bin.Identifier);
                attributes.Add("created_by", bin.CreatedBy);
                attributes.Add("modified_by", bin.ModifiedBy);

                switch (bin.BinType)
                {
                case BinTypeEnum.RoundStorage:
                    attributes.Add("bin_type", "round_storage");
                    break;

                case BinTypeEnum.GravityWagon:
                    attributes.Add("bin_type", "gravity_wagon");
                    break;

                case BinTypeEnum.PolygonStructure:
                    attributes.Add("bin_type", "polygon_structure");
                    break;

                case BinTypeEnum.FlatStructure:
                    attributes.Add("bin_type", "flat_structure");
                    break;
                }

                attributes.Add("year_collected", bin.YearCollected);

                if (bin.IsLeased.HasValue)
                {
                    attributes.Add("owned_or_leased", bin.IsLeased.Value ? "leased" : "owned");
                }

                if (bin.HasDryingDevice.HasValue)
                {
                    attributes.Add("drying_device", bin.HasDryingDevice.Value ? "true" : "false");
                }

                if (bin.HasGrainHeightIndicator.HasValue)
                {
                    attributes.Add("bin_level_indicator_device", bin.HasGrainHeightIndicator.Value ? "true" : "false");
                }

                switch (bin.LadderType)
                {
                case Ladder.None:
                    attributes.Add("ladder_type", "none");
                    break;

                case Ladder.Ladder:
                    attributes.Add("ladder_type", "ladder");
                    break;

                case Ladder.Stairs:
                    attributes.Add("ladder_type", "stairs");
                    break;
                }

                attributes.Add("notes", bin.Notes);

                //bin type specific logic below
                Type t = bin.GetType();
                if (bin.BinType == BinTypeEnum.FlatStructure)
                {
                    if (t.Equals(typeof(FlatBin)))
                    {
                        FlatBin flat = (FlatBin)bin;
                        attributes.Add("crib_height", flat.CribLength);
                        attributes.Add("crib_width", flat.CribWidth);
                    }
                }
                else if (bin.BinType == BinTypeEnum.GravityWagon)
                {
                    if (t.Equals(typeof(GravityBin)))
                    {
                        GravityBin gravityBin = (GravityBin)bin;
                        attributes.Add("chute_length", gravityBin.ChuteLength);
                        attributes.Add("hopper_height", gravityBin.HopperHeight);
                        attributes.Add("rectangle_height", gravityBin.RectangleHeight);
                        attributes.Add("rectangle_length", gravityBin.RectangleLength);
                        attributes.Add("rectangle_width", gravityBin.RectangleWidth);
                    }
                }
                else if (bin.BinType == BinTypeEnum.PolygonStructure)
                {
                    if (t.Equals(typeof(PolygonBin)))
                    {
                        PolygonBin polygonBin = (PolygonBin)bin;
                        attributes.Add("side_height", polygonBin.SideHeight);
                        attributes.Add("side_width", polygonBin.SideWidth);
                        attributes.Add("number_of_sides", polygonBin.NumberOfSides);
                    }
                }
                else if (bin.BinType == BinTypeEnum.RoundStorage)
                {
                    if (t.Equals(typeof(RoundBin)))
                    {
                        RoundBin round = (RoundBin)bin;
                        if (round.HasHopper.HasValue)
                        {
                            attributes.Add("has_hopper", round.HasHopper.Value ? "true" : "false");
                        }
                        attributes.Add("radius", round.Radius);
                        attributes.Add("wall_height", round.WallHeight);
                        attributes.Add("roof_height", round.RoofHeight);
                        attributes.Add("hopper_height", round.HopperHeight);
                    }
                }

                MapPoint mp;
                double   lat = 0;
                double   lon = 0;

                try
                {
                    var locator = CrossGeolocator.Current;
                    locator.DesiredAccuracy = 1000;
                    var position = await locator.GetPositionAsync();

                    if (position == null)
                    {
                        Console.WriteLine("Location Service error");
                    }
                    lat = position.Latitude;
                    lon = position.Longitude;
                }
                catch { }

                string   lonS      = lon.ToString();
                string[] split     = lonS.Split('.');
                var      charArray = split[1].ToCharArray();
                //seperate good location, make third if necassary
                string first     = charArray[0].ToString();
                string second    = charArray[1].ToString();
                string third     = charArray[2].ToString();
                Random random    = new Random();
                int    addition  = random.Next(25, 75);
                string additionS = addition.ToString();
                string newLong   = split[0] + '.' + first + second + third + additionS;
                //latitude
                string   latS       = lat.ToString();
                string[] splitL     = latS.Split('.');
                var      charArrayL = splitL[1].ToCharArray();
                //seperate good location, make third if necassary
                string firstL             = charArrayL[0].ToString();
                string secondL            = charArrayL[1].ToString();
                string thirdL             = charArrayL[2].ToString();
                int    additionL          = random.Next(25, 75);
                string additionSL         = additionL.ToString();
                string newLat             = splitL[0] + '.' + firstL + secondL + thirdL + additionSL;
                double clusteredLongitude = double.Parse(newLong);
                double clusteredLatitude  = double.Parse(newLat);

                mp = new MapPoint(clusteredLongitude, clusteredLatitude);

                binViewModel.ArcGISFeature = (ArcGISFeature)_featureTable.CreateFeature(attributes, mp);

                await _featureTable.AddFeatureAsync(binViewModel.ArcGISFeature);

                await binViewModel.ArcGISFeature.LoadAsync();

                if (DeviceInfo.DeviceType == DeviceType.Physical)
                {
                    using (var memoryStream = new MemoryStream())
                    {
                        bin.Image.GetStream().CopyTo(memoryStream);
                        // add an attachment - pass the name, mime type, and attachment data (bytes, etc.)
                        await binViewModel.ArcGISFeature.AddAttachmentAsync("Photo.jpg", "image/jpg", memoryStream.ToArray()); //agsFeature
                    }
                }

                if (yTY == null)
                {
                    yTY = new List <YTYData>();
                }

                //create json
                string jsonString = JsonConvert.SerializeObject(yTY);
                byte[] byteArray  = Encoding.UTF8.GetBytes(jsonString);

                List <Attachment>          attachmentsToRemove = new List <Attachment>();
                IReadOnlyList <Attachment> attachments         = await binViewModel.ArcGISFeature.GetAttachmentsAsync();

                foreach (Attachment attachment in attachments)
                {
                    if (attachment.Name.Equals(YTY_FILE_NAME))
                    {
                        attachmentsToRemove.Add(attachment);
                    }
                }

                await binViewModel.ArcGISFeature.DeleteAttachmentsAsync(attachmentsToRemove);

                await binViewModel.ArcGISFeature.AddAttachmentAsync(YTY_FILE_NAME, "application/json", byteArray); //agsFeature

                await _featureTable.UpdateFeatureAsync(binViewModel.ArcGISFeature);                                //agsFeature

                // push to ArcGIS Online feature service
                IReadOnlyList <EditResult> editResults = await _featureTable.ApplyEditsAsync();

                // check results for errors
                foreach (var er in editResults)
                {
                    if (er.CompletedWithErrors)
                    {
                        return(ArcCrudEnum.Failure);
                    }
                }

                return(ArcCrudEnum.Success);
            }
            catch (ArcGISWebException)
            {
                return(ArcCrudEnum.Exception);
            }
        }
Exemple #24
0
        private void FillBins()
        {
            for (int i = 1; i <= model.Levels; i++)
            {
                for (int j = 1; j <= model.Sections; j++)
                {
                    BinViewModel finded = model.BinsViewModel.BinViewModels.Find(x => x.Level == i && x.Section == j);
                    if (finded is BinViewModel)
                    {
                        try
                        {
                            BinInEditRackView exist = BinInEditRackViews.Find(x => x.Section == j && x.Level == i);
                            if (exist is BinInEditRackView)
                            {
                                exist.Update(finded);
                                exist.Marked = true;
                            }
                            else
                            {
                                BinInEditRackView bierv = new BinInEditRackView(finded);
                                bierv.Section = j;
                                bierv.Level   = i;
                                bierv.Marked  = true;
                                grid.Children.Add(bierv, finded.Section, finded.Section + finded.SectionSpan, finded.Level, finded.Level + finded.LevelSpan);
                                BinInEditRackViews.Add(bierv);
                            }
                        }
                        catch (Exception exp)
                        {
                            System.Diagnostics.Debug.WriteLine(exp.Message);
                        }
                    }
                    else
                    {
                        try
                        {
                            EmptySpaceViewModel esvm = model.BinsViewModel.EmptySpacesViewModels.Find(x => x.Level == i && x.Section == j);
                            if (esvm is EmptySpaceViewModel)
                            {
                                EmptySpaceViewInRack exist = EmptySpaceViewInRacks.Find(x => x.Section == j && x.Level == i);
                                if (exist is EmptySpaceViewInRack)
                                {
                                    exist.Marked = true;
                                }
                                else
                                {
                                    EmptySpaceViewInRack esvir = new EmptySpaceViewInRack(esvm);
                                    esvir.Section = j;
                                    esvir.Level   = i;
                                    esvir.Marked  = true;
                                    grid.Children.Add(esvir, esvm.Section, esvm.Level);
                                    EmptySpaceViewInRacks.Add(esvir);
                                }
                            }
                        }
                        catch (Exception exp)
                        {
                            System.Diagnostics.Debug.WriteLine(exp.Message);
                        }
                    }
                }
            }
            BinInEditRackViews.RemoveAll(x => x.Marked == false);
            foreach (BinInEditRackView bierv in BinInEditRackViews)
            {
                bierv.Marked = false;
            }

            EmptySpaceViewInRacks.RemoveAll(x => x.Marked == false);
            foreach (EmptySpaceViewInRack esvmir in EmptySpaceViewInRacks)
            {
                esvmir.Marked = false;
            }
        }
        public static async Task <ArcCrudEnum> EditBin(BinViewModel binViewModel)
        {
            IBinstance    bin           = binViewModel.Binstance;
            ArcGISFeature featureToEdit = binViewModel.ArcGISFeature;

            try
            {
                await featureToEdit.LoadAsync();

                featureToEdit.Attributes["identifier"]  = bin.Identifier;
                featureToEdit.Attributes["modified_by"] = binViewModel.EmpoyeeNumber;

                switch (bin.BinType)
                {
                case BinTypeEnum.RoundStorage:
                    featureToEdit.Attributes["bin_type"] = "round_storage";
                    break;

                case BinTypeEnum.GravityWagon:
                    featureToEdit.Attributes["bin_type"] = "gravity_wagon";
                    break;

                case BinTypeEnum.PolygonStructure:
                    featureToEdit.Attributes["bin_type"] = "polygon_structure";
                    break;

                case BinTypeEnum.FlatStructure:
                    featureToEdit.Attributes["bin_type"] = "flat_structure";
                    break;
                }

                featureToEdit.Attributes["year_collected"] = bin.YearCollected;


                if (bin.IsLeased.HasValue)
                {
                    featureToEdit.Attributes["owned_or_leased"] = bin.IsLeased.Value ? "leased" : "owned";
                }

                if (bin.HasDryingDevice.HasValue)
                {
                    featureToEdit.Attributes["drying_device"] = bin.HasDryingDevice.Value ? "true" : "false";
                }

                if (bin.HasGrainHeightIndicator.HasValue)
                {
                    featureToEdit.Attributes["bin_level_indicator_device"] = bin.HasGrainHeightIndicator.Value ? "true" : "false";
                }

                switch (bin.LadderType)
                {
                case Ladder.None:
                    featureToEdit.Attributes["ladder_type"] = "none";
                    break;

                case Ladder.Ladder:
                    featureToEdit.Attributes["ladder_type"] = "ladder";
                    break;

                case Ladder.Stairs:
                    featureToEdit.Attributes["ladder_type"] = "stairs";
                    break;
                }

                featureToEdit.Attributes["notes"] = bin.Notes;

                double dr;
                //double.TryParse(bin.BinVolume, out dr);
                //featureToEdit.Attributes["bin_volume"] = dr;

                //bin type specific logic below
                Type t = bin.GetType();
                if (bin.BinType == BinTypeEnum.FlatStructure)
                {
                    if (t.Equals(typeof(FlatBin)))
                    {
                        FlatBin flat = (FlatBin)bin;
                        featureToEdit.Attributes["crib_height"] = flat.CribLength;
                        featureToEdit.Attributes["crib_width"]  = flat.CribWidth;
                    }
                }
                else if (bin.BinType == BinTypeEnum.GravityWagon)
                {
                    if (t.Equals(typeof(GravityBin)))
                    {
                        GravityBin gravityBin = (GravityBin)bin;
                        featureToEdit.Attributes["chute_length"]     = gravityBin.ChuteLength;
                        featureToEdit.Attributes["hopper_height"]    = gravityBin.HopperHeight;
                        featureToEdit.Attributes["rectangle_height"] = gravityBin.RectangleHeight;
                        featureToEdit.Attributes["rectangle_length"] = gravityBin.RectangleLength;
                        featureToEdit.Attributes["rectangle_width"]  = gravityBin.RectangleWidth;
                    }
                }
                else if (bin.BinType == BinTypeEnum.PolygonStructure)
                {
                    if (t.Equals(typeof(PolygonBin)))
                    {
                        PolygonBin polygonBin = (PolygonBin)bin;
                        featureToEdit.Attributes["side_height"]     = polygonBin.SideHeight;
                        featureToEdit.Attributes["side_width"]      = polygonBin.SideWidth;
                        featureToEdit.Attributes["number_of_sides"] = polygonBin.NumberOfSides;
                    }
                }
                else if (bin.BinType == BinTypeEnum.RoundStorage)
                {
                    if (t.Equals(typeof(PolygonBin)))
                    {
                        RoundBin round = (RoundBin)bin;
                        if (round.HasHopper.HasValue)
                        {
                            featureToEdit.Attributes["has_hopper"] = round.HasHopper.Value ? "true" : "false";
                        }

                        featureToEdit.Attributes["radius"]        = round.Radius;
                        featureToEdit.Attributes["wall_height"]   = round.WallHeight;
                        featureToEdit.Attributes["roof_height"]   = round.RoofHeight;
                        featureToEdit.Attributes["hopper_height"] = round.HopperHeight;
                    }
                }


                // can't be null
                if (binViewModel.Binstance.YTYDatas == null)
                {
                    binViewModel.Binstance.YTYDatas = new List <YTYData>();
                }
                //use data in _binViewModel

                System.Diagnostics.Debug.Print("Feature can edit attachments" + (featureToEdit.CanEditAttachments ? "Yes" : "No"));
                //-------- Formatting --------
                //create json
                string jsonString = JsonConvert.SerializeObject(binViewModel.Binstance.YTYDatas);

                //System.Diagnostics.Debug.Print(jsonString);
                //System.Diagnostics.Debug.Print(((Binstance)(binViewModel.Binstance)).YTYDatasString());
                // convert json to byte array
                byte[] byteArray = Encoding.UTF8.GetBytes(jsonString);


                //-------- ARC Connection --------
                //remove old YTYData
                List <Attachment>          attachmentsToRemove = new List <Attachment>();
                IReadOnlyList <Attachment> attachments         = await featureToEdit.GetAttachmentsAsync();

                foreach (Attachment attachment in attachments)
                {
                    System.Diagnostics.Debug.Print(attachment.Name);
                    if (attachment.Name.Equals(YTY_FILE_NAME))
                    {
                        System.Diagnostics.Debug.Print("Found YTY attachment");
                        attachmentsToRemove.Add(attachment);
                    }
                }
                System.Diagnostics.Debug.Print("Attachments to remove:");
                foreach (Attachment attachment in attachments)
                {
                    System.Diagnostics.Debug.Print(attachment.Name);
                }

                if (attachmentsToRemove.Any())
                {
                    //update the json file
                    await featureToEdit.UpdateAttachmentAsync(attachmentsToRemove.First(), YTY_FILE_NAME, "application/json", byteArray);
                }

                _featureTable = (ServiceFeatureTable)featureToEdit.FeatureTable;

                // update feature after attachment added
                await _featureTable.UpdateFeatureAsync(featureToEdit); //agsFeature

                System.Diagnostics.Debug.Print("Feature table updated");

                // push to ArcGIS Online feature service
                IReadOnlyList <EditResult> editResults = await _featureTable.ApplyEditsAsync();

                System.Diagnostics.Debug.Print("Arc updated");

                foreach (var er in editResults)
                {
                    if (er.CompletedWithErrors)
                    {
                        // handle error (er.Error.Message)
                        return(ArcCrudEnum.Failure);
                    }
                }

                return(ArcCrudEnum.Success);
            }
            catch (ArcGISWebException)
            {
                return(ArcCrudEnum.Exception);
            }
        }
Exemple #26
0
 public BinInNewRackView(BinViewModel bvm)
 {
     Model          = bvm;
     BindingContext = Model;
     InitializeComponent();
 }
Exemple #27
0
 public ActionResult BinList_Update([DataSourceRequest] DataSourceRequest request, BinViewModel product)
 {
     return(Json(""));
 }
        public static IBinstance MapToBin(this BinViewModel inViewModel)
        {
            IBinstance bin = new Binstance();

            if (inViewModel.Binstance.Image != null)
            {
                bin.Image = inViewModel.Binstance.Image;
            }

            if (inViewModel.New)
            {
                bin.CreatedBy = inViewModel.EmpoyeeNumber;
            }
            else if (inViewModel.Edit)
            {
                bin.ModifiedBy = inViewModel.EmpoyeeNumber;
            }
            else
            {
                bin.CreatedBy  = inViewModel.CreatedBy;
                bin.ModifiedBy = inViewModel.ModifiedBy;
            }

            bin.Identifier = inViewModel.Identifier;

            bin.YearCollected = inViewModel.YearCollected;
            switch (inViewModel.Owned)
            {
            case 0:
                bin.IsLeased = false;
                break;

            case 1:
                bin.IsLeased = true;
                break;

            default:
                bin.IsLeased = null;
                break;
            }

            switch (inViewModel.HasDryingDevice)
            {
            case 0:
                bin.HasDryingDevice = true;
                break;

            case 1:
                bin.HasDryingDevice = false;
                break;

            default:
                bin.HasDryingDevice = null;
                break;
            }

            switch (inViewModel.HasGrainHeightIndicator)
            {
            case 0:
                bin.HasGrainHeightIndicator = true;
                break;

            case 1:
                bin.HasGrainHeightIndicator = false;
                break;

            default:
                bin.HasGrainHeightIndicator = null;
                break;
            }

            switch (inViewModel.LadderType)
            {
            case 0:
                bin.LadderType = Enums.Ladder.None;
                break;

            case 1:
                bin.LadderType = Enums.Ladder.Stairs;
                break;

            case 2:
                bin.LadderType = Enums.Ladder.Stairs;
                break;
            }
            bin.Notes = inViewModel.Notes;

            switch (inViewModel.BinType)
            {
            case 0:
                bin.BinType = Enums.BinTypeEnum.FlatStructure;
                break;

            case 1:
                bin.BinType = Enums.BinTypeEnum.GravityWagon;
                break;

            case 2:
                bin.BinType = Enums.BinTypeEnum.PolygonStructure;
                break;

            case 3:
                bin.BinType = Enums.BinTypeEnum.RoundStorage;
                break;

            default:
                bin.BinType = Enums.BinTypeEnum.NotFound;
                break;
            }

            return(bin);
        }
        public static void MapBinstanceToViewModel(this BinViewModel inViewModel)
        {
            IBinstance oldBin = inViewModel.Binstance;

            inViewModel.Identifier = oldBin.Identifier;

            switch (oldBin.BinType)
            {
            case Enums.BinTypeEnum.FlatStructure:
                inViewModel.BinType = 0;
                inViewModel.FlatBinstanceToViewModel();
                break;

            case Enums.BinTypeEnum.GravityWagon:
                inViewModel.BinType = 1;
                inViewModel.GravityBinstanceToViewModel();
                break;

            case Enums.BinTypeEnum.PolygonStructure:
                inViewModel.BinType = 2;
                inViewModel.PolyBinstanceToViewModel();
                break;

            case Enums.BinTypeEnum.RoundStorage:
                inViewModel.BinType = 3;
                inViewModel.RoundBinstanceToViewModel();
                break;

            case Enums.BinTypeEnum.NotFound:
                inViewModel.BinType = -1;
                break;
            }

            switch (oldBin.IsLeased)
            {
            case true:
                inViewModel.Owned = 0;
                break;

            case false:
                inViewModel.Owned = 1;
                break;

            case null:
                inViewModel.Owned = -1;
                break;
            }

            switch (oldBin.HasDryingDevice)
            {
            case true:
                inViewModel.HasDryingDevice = 0;
                break;

            case false:
                inViewModel.HasDryingDevice = 1;
                break;

            case null:
                inViewModel.HasDryingDevice = -1;
                break;
            }

            switch (oldBin.HasGrainHeightIndicator)
            {
            case true:
                inViewModel.HasGrainHeightIndicator = 0;
                break;

            case false:
                inViewModel.HasGrainHeightIndicator = 1;
                break;

            case null:
                inViewModel.HasGrainHeightIndicator = -1;
                break;
            }

            switch (oldBin.LadderType)
            {
            case Enums.Ladder.None:
                inViewModel.LadderType = 0;
                break;

            case Enums.Ladder.Stairs:
                inViewModel.LadderType = 1;
                break;

            case Enums.Ladder.Ladder:
                inViewModel.LadderType = 2;
                break;

            default:
                inViewModel.LadderType = -1;
                break;
            }

            inViewModel.Notes = oldBin.Notes;
        }
        public static RoundBin MapBinToRoundType(this BinViewModel inViewModel, IBinstance bin)
        {
            RoundBin rbin = new RoundBin(bin);

            try
            {
                switch (inViewModel.HasHopper)
                {
                case 0:
                    rbin.HasHopper = true;
                    break;

                case 1:
                    rbin.HasHopper = false;
                    break;

                default:
                    rbin.HasHopper = null;
                    break;
                }
            }
            catch (Exception)
            {
                rbin.HasHopper = null;
            }

            double d;

            try
            {
                rbin.Radius = double.TryParse(inViewModel.Radius, out d) ? d : 0.0;

                rbin.Circumference = rbin.Radius * 2 * Math.PI;
            }
            catch (Exception)
            {
                rbin.Radius        = 0;
                rbin.Circumference = 0;
            }

            try
            {
                rbin.WallHeight = double.TryParse(inViewModel.WallHeight, out d) ? d : 0;
            }
            catch (Exception)
            {
                rbin.WallHeight = 0;
            }

            try
            {
                rbin.RoofHeight = double.TryParse(inViewModel.RoofHeight, out d) ? d : 0;
            }
            catch (Exception)
            {
                rbin.RoofHeight = 0;
            }

            try
            {
                rbin.HopperHeight = double.TryParse(inViewModel.HopperHeight, out d) ? d : 0;
            }
            catch (Exception)
            {
                rbin.HopperHeight = 0;
            }

            return(rbin);
        }