예제 #1
0
        public async Task <IActionResult> Create(Event_ViewModel model)
        {
            Event evnt = _eventService.ConvertEventViewModelToEvent(model);

            if (ModelState.IsValid)
            {
                _context.Add(evnt);//dunno if this is sufficient
                await _context.SaveChangesAsync();

                _eventService.SaveEventsAndBoothItemsForNewEvent(evnt.Id, ref model, true, false);
                await _context.SaveChangesAsync();

                var budget = new Budget
                {
                    EventId               = evnt.Id,
                    SponsorshipCosts      = 0,
                    EventAdditionalsCosts = 0,
                    TravelCosts           = 0,
                    TotalCosts            = 0
                };
                _context.Add(budget);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(model));
        }
예제 #2
0
        public async Task <IActionResult> Edit(int id, Event_ViewModel model)
        {
            //this edit was just copied over but i don't think it is properly clearing all hte Event_something
            //entries like style does for the Style_something entries
            if (id != model.Id)
            {
                return(NotFound());
            }

            var evnt = _context.Event.FirstOrDefault(m => m.Id == id);

            _eventService.ConvertEventViewModelToEventForEdit(ref model, ref evnt);

            var currentBoothEventEntries = _context.Event_BoothItem.Where(eb => eb.EventId == id).ToList();

            _context.Event_BoothItem.RemoveRange(currentBoothEventEntries);
            var currentSwagEventEntries = _context.Event_SwagItem.Where(eb => eb.EventId == id).ToList();//Here we are removing the event_swag entries, but I need this data for the update?

            _context.Event_SwagItem.RemoveRange(currentSwagEventEntries);
            await _context.SaveChangesAsync();

            if (ModelState.IsValid)
            {
                _context.Update(evnt);
                await _context.SaveChangesAsync();

                _eventService.SaveEventsAndBoothItemsForNewEvent(evnt.Id, ref model, false, evnt.IsShipped);
                await _context.SaveChangesAsync();

                //var archivedId = evnt.IsActive ? 0 : 1;
                return(RedirectToAction("Details", "Events", new { id = id }));
            }
            return(View(model));
        }
        public Event ConvertEventViewModelToEvent(Event_ViewModel model)
        {
            Event evnt = new Event();

            evnt.ActualNumberCompetitors = model.ActualNumberCompetitors;
            evnt.ActualNumberSpectators  = model.ActualNumberSpectators;
            evnt.ContactName             = model.ContactName;
            evnt.ContactNumber           = model.ContactNumber;
            evnt.DeckUrl = model.DeckUrl;
            //evnt.DeckPDF = model.DeckPDF? when?
            evnt.Email   = model.Email;
            evnt.EndDate = model.EndDate;
            evnt.EstimatedNumberCompetitors = model.EstimatedNumberCompetitors;
            evnt.EstimatedNumberSpectators  = model.EstimatedNumberSpectators;
            evnt.GymName           = model.GymName;
            evnt.IsRetailer        = model.IsRetailer;
            evnt.LocationAddress   = model.LocationAddress;
            evnt.LocationZipCode   = model.LocationZipCode;
            evnt.Name              = model.Name;
            evnt.Notes             = model.Notes;
            evnt.RepId             = model.RepId;//is this how this is determined?
            evnt.RequestedShipDate = model.RequestedShipDate;
            evnt.ShippingAddress   = model.ShippingAddress;
            evnt.ShippingZipCode   = model.ShippingZipCode;
            evnt.StartDate         = model.StartDate;
            evnt.StateId           = model.StateId;
            evnt.TerritoryId       = model.TerritoryId;
            evnt.IsActive          = true;//newly created events are always active
            evnt.IsShipped         = false;
            evnt.TrackingNumber    = model.TrackingNumber;
            evnt.EventCategoryId   = model.EventCategoryId;
            evnt.ShippingCity      = model.ShippingCity;
            evnt.LocationCity      = model.LocationCity;
            evnt.NumberAdditionalPersonnelRequested = model.NumberAdditionalPersonnelRequested;


            if (string.IsNullOrWhiteSpace(evnt.DeckUrl))
            {
                evnt.DeckUrl = "no link";
            }
            if (string.IsNullOrWhiteSpace(evnt.TrackingNumber))
            {
                evnt.TrackingNumber = "no tracking number";
            }

            return(evnt);
        }
        public void SaveEventsAndBoothItemsForNewEvent(int eventId, ref Event_ViewModel model, bool IsCreation, bool IsShipped)
        {
            List <Event_SwagItem> eventSwagItems = new List <Event_SwagItem>();

            for (int i = 0; i < model.Event_SwagItems.Count(); i++)
            {
                Event_SwagItem eventSwagitem = new Event_SwagItem();
                eventSwagitem.EventId = eventId;
                eventSwagitem.QuantityBroughtToEvent = model.Event_SwagItems[i].QuantityBroughtToEvent;//this quantity brought is not being fed in properly
                //given away and remaining after are only for edits? maybe keep the mapping?//
                //PERHAPS quantity remaining after event should be set to quantity brought on event creation?
                if (IsCreation || !IsShipped)//OR if the event is not yet shipped?
                {
                    eventSwagitem.QuantityRemainingAfterEvent = model.Event_SwagItems[i].QuantityBroughtToEvent;
                }
                else
                {
                    eventSwagitem.QuantityRemainingAfterEvent = model.Event_SwagItems[i].QuantityRemainingAfterEvent;//eventSwagitem.QuantityBroughtToEvent - eventSwagitem.QuantityGivenAway;
                }
                eventSwagitem.QuantityGivenAway = eventSwagitem.QuantityBroughtToEvent - eventSwagitem.QuantityRemainingAfterEvent;
                //does it hurt to have these two anyway?
                eventSwagitem.SwagItemId = model.Event_SwagItems[i].SwagItemId;

                eventSwagItems.Add(eventSwagitem);
            }
            foreach (var eventSwagItem in eventSwagItems)//could do add range here
            {
                _context.Event_SwagItem.Add(eventSwagItem);
            }

            List <Event_BoothItem> eventBoothItems = new List <Event_BoothItem>();

            for (int i = 0; i < model.Event_BoothItems.Count(); i++)
            {
                Event_BoothItem eventBoothItem = new Event_BoothItem();
                eventBoothItem.EventId         = eventId;
                eventBoothItem.BoothItemId     = model.Event_BoothItems[i].BoothItemId;
                eventBoothItem.QuantityAtEvent = model.Event_BoothItems[i].QuantityAtEvent;

                eventBoothItems.Add(eventBoothItem);
            }
            foreach (var eventBoothItem in eventBoothItems)
            {
                _context.Event_BoothItem.Add(eventBoothItem);
            }
        }
        public void PopulateDropDowns(ref Event_ViewModel model)
        {
            var territories = _context.Territory.OrderBy(c => c.Name).Where(p => p.IsActive == true && p.Name != "Black Diamond Inventory").Select(x => new { Id = x.Id, Value = x.Name });

            model.TerritoryList = new SelectList(territories, "Id", "Value");

            var states = _context.State.OrderBy(c => c.Name).Where(p => p.IsActive == true).Select(x => new { Id = x.Id, Value = x.Name });

            model.StateList = new SelectList(states, "Id", "Value");

            var reps = _context.FakeUsers.OrderBy(c => c.Name).Where(p => p.IsActive == true).Select(x => new { Id = x.Id, Value = x.Name });

            model.RepList = new SelectList(reps, "Id", "Value");

            var eventCategories = _context.EventCategory.OrderBy(c => c.Name).Where(p => p.IsActive == true).Select(x => new { Id = x.Id, Value = x.Name });

            model.EventCategoryList = new SelectList(eventCategories, "Id", "Value");
        }
예제 #6
0
        // GET: Events/Create
        public IActionResult Create()
        {
            var model = new Event_ViewModel();

            _eventService.PopulateDropDowns(ref model);
            model.StartDate         = DateTime.Now;
            model.EndDate           = DateTime.Now;
            model.RequestedShipDate = DateTime.Now;

            //begin populating view model lists of all swag items and swag items for the event, should be same number so made here
            //and then same for booths
            model.AllSwagItems    = _context.SwagItem.Where(s => s.IsActive == true).ToList();
            model.Event_SwagItems = new List <Event_SwagItem_ViewModel>();

            for (int i = 0; i < model.AllSwagItems.Count(); i++)
            {
                model.Event_SwagItems.Add(new Event_SwagItem_ViewModel
                {
                    EventId                     = 0,//this must be set to the events id on Post for create
                    SwagItemId                  = model.AllSwagItems[i].Id,
                    QuantityBroughtToEvent      = 0,
                    QuantityGivenAway           = 0,
                    QuantityRemainingAfterEvent = 0,
                    SwagItemName                = model.AllSwagItems[i].Name
                });
            }

            model.AllBoothItems    = _context.BoothItem.Where(s => s.IsActive == true).ToList();
            model.Event_BoothItems = new List <Event_BoothItem_ViewModel>();

            for (int i = 0; i < model.AllBoothItems.Count(); i++)
            {
                model.Event_BoothItems.Add(new Event_BoothItem_ViewModel
                {
                    EventId         = 0,//this must be set to the events id on Post for create
                    BoothItemId     = model.AllBoothItems[i].Id,
                    QuantityAtEvent = 0,
                    BoothItemName   = model.AllBoothItems[i].Name,
                });
            }

            return(View(model));
        }
        public Event_ViewModel ConvertEventToEventViewModel(Event evnt)
        {
            var model = new Event_ViewModel();

            model.Id = evnt.Id;

            model.ActualNumberCompetitors = evnt.ActualNumberCompetitors;
            model.ActualNumberSpectators  = evnt.ActualNumberSpectators;
            model.ContactName             = evnt.ContactName;
            model.ContactNumber           = evnt.ContactNumber;
            model.DeckUrl = evnt.DeckUrl;
            //modelA.DeckPDF = evnt.DeckPDF? when?
            model.Email   = evnt.Email;
            model.EndDate = evnt.EndDate;
            model.EstimatedNumberCompetitors = evnt.EstimatedNumberCompetitors;
            model.EstimatedNumberSpectators  = evnt.EstimatedNumberSpectators;
            model.GymName           = evnt.GymName;
            model.IsRetailer        = evnt.IsRetailer;
            model.LocationAddress   = evnt.LocationAddress;
            model.LocationZipCode   = evnt.LocationZipCode;
            model.Name              = evnt.Name;
            model.Notes             = evnt.Notes;
            model.RepId             = evnt.RepId;//is this how this is determined?
            model.RequestedShipDate = evnt.RequestedShipDate;
            model.ShippingAddress   = evnt.ShippingAddress;
            model.ShippingZipCode   = evnt.ShippingZipCode;
            model.StartDate         = evnt.StartDate;
            model.StateId           = evnt.StateId;
            model.TerritoryId       = evnt.TerritoryId;
            model.IsActive          = evnt.IsActive;
            model.IsShipped         = evnt.IsShipped;
            model.TrackingNumber    = evnt.TrackingNumber;
            model.EventCategoryId   = evnt.EventCategoryId;
            model.ShippingCity      = evnt.ShippingCity;
            model.LocationCity      = evnt.LocationCity;
            model.NumberAdditionalPersonnelRequested = evnt.NumberAdditionalPersonnelRequested;

            //add event rep state and terr names here
            model.RepName = _context.FakeUsers.FirstOrDefault(u => u.Id == model.RepId).Name;//null ref but needs to be replaced with actual users database later anyway

            var territory = _context.Territory.FirstOrDefault(u => u.Id == model.TerritoryId);

            if (territory != null)
            {
                model.TerritoryName = territory.Name;
            }

            var state = _context.State.FirstOrDefault(u => u.Id == model.StateId);

            if (state != null)
            {
                model.StateName = state.Name;
            }

            var eventCategory = _context.EventCategory.FirstOrDefault(u => u.Id == model.EventCategoryId);

            if (eventCategory != null)
            {
                model.EventCategoryName = eventCategory.Name;
            }

            return(model);
        }