// GET: Advisories/Details/5
        public async Task <ActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Advisory advisory = await db.Advisory.FindAsync(id);

            if (advisory == null)
            {
                return(HttpNotFound());
            }

            ViewBag.Advisory = advisory.Message;
            IEnumerable <Recipient> list = db.Recipients.Where(m => m.AdvisoryId == id);

            //List<Recipient> RecipientList = db.Recipients.Where(m => m.AdvisoryId == id).ToList();
            //List<ContactDetail> contactList = db.ContactDetails.ToList();
            //List<RecipientViewModel> list = new List<RecipientViewModel>();

            //foreach (var item in RecipientList)
            //{
            //    RecipientViewModel r = new RecipientViewModel();
            //    r.Status = item.Status;
            //    r.ContactNumber = contactList.Find(m => m.MobileNumber == item.ContactNumber).MobileNumber;
            //    Farmer f = contactList.Find(m => m.ContactDetailId == item.ContactId).Farmer;
            //    string name = f.LastName + ", " + f.FirstName + " " + f.MiddleName[0] + ".";
            //    r.FarmerName = name;
            //    list.Add(r);
            //}

            return(View(list));
        }
示例#2
0
        public IActionResult Edit(Advisory advisory)
        {
            Advisory changed_advisory = advisoryRepository.Update(advisory);

            TempData["SuccessMessage"] = "Advisory Updated Successfully!";
            return(RedirectToAction("Index", "Advisory"));
        }
示例#3
0
        public IActionResult Details(int id)
        {
            Advisory advisory = advisoryRepository.GetAdvisory(id);
            var      userid   = signInManager.UserManager.GetUserId(User);
            var      user     = context.Users.Where(usr => usr.Id == userid).FirstOrDefault();

            if (advisory == null)
            {
                TempData["ErrorMessage"] = "Advisory not found!";
                if (user.IsGoverment)
                {
                    return(RedirectToAction("Index", "Advisory"));
                }
                return(RedirectToAction("AdvisoryList", "Advisory"));
            }
            else
            {
                if (user.IsGoverment)
                {
                    return(View(advisory));
                }

                return(View("AdvisoryDetails", advisory));
            }
        }
        Advisory IAdvisoryRepository.Update(Advisory advisoryChanges)
        {
            var advisory = context.Advisories.Attach(advisoryChanges);

            advisory.State = Microsoft.EntityFrameworkCore.EntityState.Modified;
            context.SaveChanges();
            return(advisoryChanges);
        }
示例#5
0
        public List <Advisory> CreateAdvisory(Advisory advisory)
        {
            using TinyCollegeContext _context = new TinyCollegeContext(_builder.Options);

            _context.Add(advisory);
            _context.SaveChanges();
            return(_context.Advisories.Where(x => x.AdvisoryId == _context.Advisories.Max(x => x.AdvisoryId)).ToList());
        }
示例#6
0
        public IActionResult DeleteConfirmed(int id)
        {
            Advisory advisory = advisoryRepository.GetAdvisory(id);

            advisoryRepository.Delete(advisory.AdvisoryId);

            TempData["SuccessMessage"] = "Advisory Deleted Successfully!";
            return(RedirectToAction("Index", "Advisory"));
        }
示例#7
0
        public List <Advisory> EditAdvisory(Advisory advisory)
        {
            using TinyCollegeContext _context = new TinyCollegeContext(_builder.Options);
            var tmpAdvisory = _context.Advisories.First(x => x.AdvisoryId == advisory.AdvisoryId);

            _context.Entry(tmpAdvisory).CurrentValues.SetValues(advisory);
            _context.SaveChanges();
            return(_context.Advisories.Where(x => x.AdvisoryId == advisory.AdvisoryId).ToList());
        }
示例#8
0
 public IActionResult Create(Advisory advisory)
 {
     if (ModelState.IsValid)
     {
         Advisory newAdvisory = advisoryRepository.Add(advisory);
         TempData["SuccessMessage"] = "Advisory Published Successfully!";
     }
     return(RedirectToAction("Index"));
 }
示例#9
0
        public IActionResult Delete(int id)
        {
            Advisory advisory = advisoryRepository.GetAdvisory(id);

            if (advisory == null)
            {
                TempData["ErrorMessage"] = "Advisory not found!";
                return(RedirectToAction("Index", "Advisory"));
            }
            return(View(advisory));
        }
示例#10
0
        public void Delete(int id)
        {
            var advisory = new Advisory
            {
                AdvisoryID = id
            };

            Db.Advisories.Attach(advisory);
            Db.Entry(advisory).State = EntityState.Deleted;
            Db.SaveChanges();
        }
示例#11
0
        Advisory IAdvisoryRepository.Delete(int AdvisoryID)
        {
            Advisory advisory = context.Advisories.Find(AdvisoryID);

            if (advisory != null)
            {
                context.Advisories.Remove(advisory);
                context.SaveChanges();
            }
            return(advisory);
        }
示例#12
0
        public AdvisoryModel Create(AdvisoryModel model)
        {
            var advisory = new Advisory
            {
                AdvisoryText = model.AdvisoryText
            };

            Db.Advisories.Add(advisory);
            Db.SaveChanges();

            model.AdvisoryID = advisory.AdvisoryID;

            return(model);
        }
示例#13
0
        public void advisory_ctor()
        {
            var expected = new IAdvisedAction[] 
            {
                MockRepository.GenerateStub<IAdvisedAction>(),
                MockRepository.GenerateStub<IAdvisedAction>(),
                MockRepository.GenerateStub<IAdvisedAction>()
            };

            var actual = new Advisory( expected );

            actual.Count.Should().Be.EqualTo( 3 );
            actual.Should().Have.SameSequenceAs( expected );
        }
示例#14
0
        public void advisory_ctor()
        {
            var expected = new IAdvisedAction[]
            {
                A.Fake <IAdvisedAction>(),
                A.Fake <IAdvisedAction>(),
                A.Fake <IAdvisedAction>()
            };

            var actual = new Advisory(expected);

            actual.Count.Should().Be.EqualTo(3);
            actual.Should().Have.SameSequenceAs(expected);
        }
        public async Task <ActionResult> Create([Bind(Include = "AdvisoryId,Message")] Advisory advisory)
        {
            advisory.TimeStamp = DateTime.Now.AddHours(8);
            advisory.Username  = User.Identity.Name;

            if (ModelState.IsValid)
            {
                db.Advisory.Add(advisory);
                await db.SaveChangesAsync();

                //advisory = db.Advisory.OrderByDescending(m => m.AdvisoryId).First();

                Helper.SendRequestFactory send        = new Helper.SendRequestFactory(advisory.Message);
                List <ContactDetail>      contactList = db.ContactDetails.ToList();
                foreach (var item in contactList)
                {
                    Recipient r = new Recipient();
                    r.AdvisoryId    = advisory.AdvisoryId;
                    r.ContactNumber = item.MobileNumber;
                    r.Name          = item.Farmer.LastName + ", " + item.Farmer.FirstName;
                    db.Recipients.Add(r);
                    db.SaveChanges();
                    //r = db.Recipients.OrderByDescending(m => m.RecipientId).First();

                    using (WebClient wc = new WebClient())
                    {
                        try
                        {
                            wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
                            wc.UploadString(Helper.Constants.REQUEST_URL, send.ParameterString(item.MobileNumber, r.RecipientId));
                            r.Status = "Sent";
                        }
                        catch (WebException)
                        {
                            r.Status = "Failed";
                        }
                        finally
                        {
                            db.Entry(r).State = EntityState.Modified;
                            db.SaveChanges();
                        }
                    }
                }

                return(RedirectToAction("Index"));
            }

            return(View(advisory));
        }
示例#16
0
        private void Init(FileManager fm)
        {
            //  cc = fm.cc;
            //  myDALClient = fm.AtMng.myDALClient;
            base.DAL = fm.DALMngr;

            myFM    = fm;
            myatMng = fm.AtMng;
            // myUser = myatMng.myUser;

            RuleHandler = myatMng.RuleHandler;

            MyDS = new Advisory();
            MyDS.EnforceConstraints = false;
        }
示例#17
0
        public static void Save(AdvisoryModel _advisory, out string message)
        {
            try
            {
                message = "";

                using (var db = new SLVLOnlineEntities())
                {
                    if (_advisory.ID == Guid.Empty)
                    {
                        Advisory newAdvisory = new Advisory
                        {
                            ID           = Guid.NewGuid(),
                            Description  = _advisory.Description,
                            ModifiedBy   = UniversalHelpers.CurrentUser.ID,
                            ModifiedDate = DateTime.Now
                        };

                        db.Entry(newAdvisory).State = System.Data.Entity.EntityState.Added;
                    }
                    else
                    {
                        var adv = db.Advisory.FirstOrDefault(r => r.ID == _advisory.ID);

                        if (adv != null && _advisory.Status == 1)
                        {
                            adv.Description = _advisory.Description;

                            adv.ModifiedBy = UniversalHelpers.CurrentUser.ID;

                            adv.ModifiedDate = DateTime.Now;

                            db.Entry(adv).State = System.Data.Entity.EntityState.Modified;
                        }
                        else if (_advisory.Status == 0)
                        {
                            db.Entry(adv).State = System.Data.Entity.EntityState.Deleted;
                        }
                    }

                    db.SaveChanges();
                }
            }
            catch (Exception error)
            {
                message = error.Message;
            }
        }
示例#18
0
        public List <Advisory> DeleteAdvisory(Advisory advisory)
        {
            using TinyCollegeContext _context = new TinyCollegeContext(_builder.Options);

            try
            {
                _context.Advisories.Attach(advisory);
                _context.Advisories.Remove(advisory);
                _context.SaveChanges();
            }
            catch (Exception e)
            {
                // ignored
            }

            return(_context.Advisories.ToList());
        }
示例#19
0
 public void advisory_ctor_null_reference()
 {
     var actual = new Advisory( null );
 }
示例#20
0
 public void ModifyAdvisory(Advisory advisory)
 {
     throw new NotImplementedException();
 }
示例#21
0
 public int AddAdvisory(Advisory advisory)
 {
     throw new NotImplementedException();
 }
示例#22
0
 Advisory IAdvisoryRepository.Add(Advisory advisory)
 {
     context.Advisories.Add(advisory);
     context.SaveChanges();
     return(advisory);
 }
示例#23
0
        public void Save(string path, int mode)
        {
            Advisory Advisory = new Advisory();

            try
            {
                string PressureText = Pressure.Text;
                string SpeedText    = Speed.Text;

                if (Pressure.Text.Contains("mbar") || Speed.Text.Contains("mph"))
                {
                    MessageBox.Show("Do not specify the units you are measuring in; these are automatically filled in for you.", "Advisory Generator", MessageBoxButton.OK, MessageBoxImage.Warning);
                    return;
                }

                Advisory.Name                = StormName.Text;
                Advisory.Headline            = Headline.Text;
                Advisory.PositionNS          = Convert.ToDouble(LocationNS.Text);
                Advisory.PositionWE          = Convert.ToDouble(LocationWE.Text);
                Advisory.NearestArea         = NearestArea.Text;
                Advisory.NearestAreaMeasure  = MeasureBox.SelectedIndex;
                Advisory.NearestAreaDistance = AwayFrom.Text;
                Advisory.AdvisoryNumber      = Convert.ToInt32(AdvisoryNum.Text);
                Advisory.Intensity           = Convert.ToInt32(Intensity.Text);
                Advisory.Gusts               = Convert.ToInt32(GustsBox.Text);
                Advisory.Pressure            = Convert.ToInt32(Pressure.Text);
                Advisory.ForwardSpeed        = Convert.ToInt32(Speed.Text);
                Advisory.AdvisoryDateTime    = (DateTime)Date.SelectedDate;


                if (Convert.ToInt32(Hours.Text) < 0)
                {
                    MessageBox.Show("An invalid input was entered", "Advisory Generator", MessageBoxButton.OK, MessageBoxImage.Warning);
                    return;
                }

                Advisory.AdvisoryDateTime = Advisory.AdvisoryDateTime.AddHours(Convert.ToInt32(Hours.Text));     // add the hours
                Advisory.AdvisoryDateTime = Advisory.AdvisoryDateTime.AddMinutes(Convert.ToInt32(Minutes.Text)); // add the minutes.
            }
            catch (FormatException)
            {
                MessageBox.Show("An invalid input was entered", "Advisory Generator", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }

            List <string> thePath = new List <string>();
            Random        RNG     = new Random();

            if (mode == 0)
            {
                thePath.Add($"000\nWTNT34 KNHC {RoundNearest(RNG.Next(99999, 200001), 10)}\nTCPAT4\n");
                thePath.Add("BULLETIN");

                if (Advisory.Intensity < 39)
                {
                    thePath.Add($"Tropical Depression {Advisory.Name.ToUpper()} Advisory Number {Advisory.AdvisoryNumber.ToString()}");
                }
                else if (Advisory.Intensity > 39 & Advisory.Intensity < 74)
                {
                    thePath.Add($"Tropical Storm {Advisory.Name.ToUpper()} Advisory Number {Advisory.AdvisoryNumber.ToString()}");
                }
                else
                {
                    thePath.Add($"Hurricane {Advisory.Name.ToUpper()} Advisory Number {Advisory.AdvisoryNumber.ToString()}");
                }
                thePath.Add($"{Advisory.Headline}\n\n");
                thePath.Add($"SUMMARY OF {Advisory.AdvisoryDateTime.ToString()} UTC...INFORMATION");                                                                                                                                 // aaaaa
                thePath.Add($"------------------------");
                thePath.Add($"LOCATION...{Advisory.PositionNS.ToString()}{LocationNSBox.Text} {Advisory.PositionWE.ToString()}{LocationWEBox.Text}...APPROXIMATELY {NearestArea.Text} {MeasureBox.Text} AWAY FROM {AwayFrom.Text}"); //yes you can get the text of a combobox
                thePath.Add($"MAXIMUM SUSTAINED WINDS...{Advisory.Intensity.ToString()} MPH...{(RoundNearest(Advisory.Intensity * 1.60934, 5)).ToString()} KM/H");
                thePath.Add($"PRESENT MOVEMENT...{Advisory.ForwardSpeed.ToString()} MPH {(RoundNearest(Advisory.ForwardSpeed * 1.60934, 5).ToString())} KM/H");
                thePath.Add($"MINIMUM CENTRAL PRESSURE...{Advisory.Pressure.ToString()} MB...{(RoundNearest(Advisory.Pressure * 0.0295301, 0.01)).ToString()} INCHES\n");

                Advisory.WarningList = WarningList;

                if (Advisory.WarningList.Count > 0)
                {
                    thePath.Add("WATCHES AND WARNINGS");
                    thePath.Add("--------------------\n");
                    foreach (Warning warning in Advisory.WarningList)
                    {
                        if (warning.Text == "none") // kek
                        {
                            thePath.Add($"A {warning.Type.ToUpper()} HAS BEEN ISSUED BY THE {warning.IssuingAgency.ToUpper()} FROM {warning.AreaFrom.ToUpper()} TO {warning.AreaTo.ToUpper()}.");
                        }
                        else
                        {
                            thePath.Add($"A {warning.Type.ToUpper()} HAS BEEN ISSUED BY THE {warning.IssuingAgency.ToUpper()} FROM {warning.AreaFrom.ToUpper()} TO {warning.AreaTo.ToUpper()} - {warning.Text.ToUpper()}.");
                        }
                    }
                }
            }
            else if (mode == 1)
            {
                string colour; // temporary.
                thePath.Add("{{Infobox Advisory");
                if (Advisory.Intensity < 39)
                {
                    colour = "5ebaff";
                    thePath.Add($"| TCName = [[File:Tropical Depression symbol Layten.png|12px]] <span style=\"color: #5ebaff;\"> {Advisory.Name} </span>");
                }
                else if (Advisory.Intensity > 39 & Advisory.Intensity < 74)
                {
                    colour = "00faf4";
                    thePath.Add($"| TCName = [[File:Tropical Storm symbol Layten.png|12px]] <span style=\"color: #00faf4;\"> {Advisory.Name} </span>");
                }
                else if (Advisory.Intensity > 74 & Advisory.Intensity < 96)
                {
                    colour = "ffffcc";
                    thePath.Add($"| TCName = [[File:Category 1 symbol Layten.png|12px]] <span style=\"color: #ffffcc;\"> {Advisory.Name} </span>");
                }
                else if (Advisory.Intensity > 96 & Advisory.Intensity < 111)
                {
                    colour = "ffe775";
                    thePath.Add($"| TCName = [[File:Category 2 symbol Layten.png|12px]] <span style=\"color: #ffe775;\"> {Advisory.Name} </span>");
                }
                else if (Advisory.Intensity > 111 & Advisory.Intensity < 130)
                {
                    colour = "ffc140";
                    thePath.Add($"| TCName = [[File:Category 3 symbol Layten.png|12px]] <span style=\"color: #ffc140;\"> {Advisory.Name} </span>");
                }
                else if (Advisory.Intensity > 130 & Advisory.Intensity < 157)
                {
                    colour = "ff8f20";
                    thePath.Add($"| TCName = [[File:Category 4 symbol Layten.png|12px]] <span style=\"color: #ff8f20;\"> {Advisory.Name} </span>");
                }
                else
                {
                    colour = "ff6060";
                    thePath.Add($"| TCName = [[File:Category 5 symbol Layten.png|12px]] <span style=\"color: #ff6060;\"> {Advisory.Name} </span>");
                }

                thePath.Add($"| Advisory = {Advisory.Headline}");
                thePath.Add($"| Time = {Advisory.AdvisoryDateTime} (Advisory #{Advisory.AdvisoryNumber})");
                thePath.Add($"| Movement = {Advisory.ForwardSpeed} mph");
                thePath.Add($"| Pressure = {Advisory.Pressure} mbar");
                thePath.Add($"| Winds = {Advisory.Intensity} mph (gusting to {Advisory.Gusts} mph)");
                thePath.Add($"| Location = {Advisory.PositionNS}{LocationNSBox.Text} {Advisory.PositionWE}{LocationWEBox.Text}");
                thePath.Add($"| Colour = {colour}");
                thePath.Add("}}");
            }
            else if (mode == 2)
            {
                if (Advisory.Intensity < 39)
                {
                    thePath.Add($"MEDISTORM {Advisory.Name}");
                }
                else if (Advisory.Intensity > 39 & Advisory.Intensity < 57)
                {
                    thePath.Add($"SEVERE MEDISTORM {Advisory.Name}");
                }
                else if (Advisory.Intensity > 57 & Advisory.Intensity < 74)
                {
                    thePath.Add($"MEDICANE {Advisory.Name}");
                }
                else if (Advisory.Intensity > 74 & Advisory.Intensity < 96)
                {
                    thePath.Add($"MAJOR MEDICANE {Advisory.Name}");
                }
                else
                {
                    thePath.Add($"CATASTROPHIC MEDICANE {Advisory.Name}");
                }
                thePath.Add($"Advisory number {Advisory.AdvisoryNumber} | {Advisory.AdvisoryDateTime}\n");
                thePath.Add(Advisory.Headline);
                thePath.Add($"Maximum sustained winds...{Advisory.Intensity} / {RoundNearest(Advisory.Intensity * 1.60934, 5)} km/h.");
                thePath.Add($"Maximum wind gusts...{Advisory.Gusts} / {RoundNearest(Advisory.Gusts * 1.60934, 5)} km/h");
                thePath.Add($"Minimum pressure...{Advisory.Pressure} mbar");
                thePath.Add($"Current location...{Advisory.PositionNS}{LocationNSBox.Text} {Advisory.PositionWE}{LocationWEBox.Text}\n");
            }

            if (mode != 1)
            {
                if (ForecastList.Count > 0)
                {
                    thePath.Add("\n");
                    if (mode == 0)
                    {
                        thePath.Add("FORECAST POSITIONS AND MAX WINDS\n"); // yeah
                    }
                    else
                    {
                        thePath.Add("Forecast...");
                    }
                    int hours = 6; // temp
                    int count = 0; // eww


                    //todo: we can make this code better.
                    foreach (Forecast forecast in ForecastList)
                    {
                        if (forecast.Intensity >= 25)
                        {
                            if (mode < 2)
                            {
                                thePath.Add($"{hours * count}H  {forecast.DateTime.ToString()} {forecast.Position} {RoundNearest(forecast.Intensity / 1.15078, 5)} KT {forecast.Intensity} MPH");
                            }
                            else
                            {
                                thePath.Add($"{hours * count}h...{forecast.Position} {forecast.Intensity} mph / {RoundNearest(forecast.Intensity * 1.60934, 5)} km/h.");
                            }
                        }
                        else
                        {
                            if (mode < 2)
                            {
                                thePath.Add($"{hours * count} DISSIPATED");
                            }
                            else
                            {
                                thePath.Add($"{hours * count}h...{forecast.Position} {forecast.Intensity} mph / {RoundNearest(forecast.Intensity * 1.60934, 5)} km/h...dissipated.");
                            }
                        }
                        count++;
                    }
                }
            }
            Clipboard.SetText(string.Join("", thePath));
            MessageBox.Show("File saved. In addition, the information has been copied to the clipboard.", "Advisory Generator", MessageBoxButton.OK, MessageBoxImage.Information);
            File.WriteAllLines(path, thePath);
        }
示例#24
0
 public void advisory_ctor_null_reference()
 {
     var actual = new Advisory(null);
 }