Esempio n. 1
0
        public async Task <IActionResult> Create(EventPostViewModel eventPostModel)
        {
            if (ModelState.IsValid)
            {
                var eventForSave = _mapper.Map <EventPostViewModel, Event>(eventPostModel);

                var eventFromDb = _eventData.AddEvent(eventForSave);

                var fileExt = eventPostModel.Wallpaper.FileName.Split('.').Last();

                string path = $"{Path.DirectorySeparatorChar}images{Path.DirectorySeparatorChar}" +
                              $"eventWallpapers{Path.DirectorySeparatorChar}"
                              + eventFromDb.Id + $".{fileExt}";


                using (var fileStream = new FileStream(_env.WebRootPath + path, FileMode.Create))
                {
                    await eventPostModel.Wallpaper.CopyToAsync(fileStream);
                }

                eventFromDb.ImageUrl  = "/images/eventWallpapers/" + eventFromDb.Id + $".{fileExt}";
                eventFromDb.Organizer = await _userManager.GetUserAsync(User);

                eventFromDb.ImageLocalUrl = _env.WebRootPath + path;
                _eventData.UpdateEvent(eventFromDb);
                return(RedirectToAction("Index", "Profile"));
            }
            return(View());
        }
        public async Task <IActionResult> PostEvent(string targetObjectID, string name, string description, string startdate, string enddate, string[] participants)
        {
            var @event = new EventPostViewModel()
            {
                HomeID             = (long)CurrentHomeID,
                Name               = name,
                Details            = description,
                StartDate          = DateTime.Parse(startdate),
                EndDate            = DateTime.Parse(enddate),
                ParticipantUserIDs = participants,
                TargetObjectID     = long.Parse(targetObjectID)
            };

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/events/post";
                httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                using (var response = await httpClient.PostAsJsonAsync(requestUri, @event))
                {
                    string content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        @event = JsonConvert.DeserializeObject <EventPostViewModel>(content);
                    }
                }
            }

            return(Json(EventsRenderer.BuildPostEvent(@event)));
        }
        public static Event Get(EventPostViewModel model)
        {
            if (model == null)
            {
                return(default(Event));
            }
            return(new Event()
            {
                Description = model.Description,
                BeginDate = model.BeginDate,
                BeginTime = (DateTime)model.BeginTime,
                EndDate = model.EndDate,
                Address = new Address()
                {
                    CityId = model.CityId,
                    LineOne = model.LineOne,
                    LineTwo = model.LineTwo,
                    Zip = model.Zip
                },
                Details = model.Details,
                EndTime = (DateTime)model.EndTime,
                ExternalLink = model.ExternalLink,
                VideoLink = model.VideoLink,
                IsFeatured = model.IsFeatured,
                SportId = (int)model.SportId,
                CityId = model.CityId.Value,
                StartingPrice = model.StartingPrice,
                EventTypeId = (int)model.EventTypeId,

                Zip = model.Zip,
            });
        }
        public ActionResult Post([FromBody] EventPostViewModel @event)
        {
            try
            {
                var currentUserID = 0l;
                var currentHomeID = 0l;
                var re            = Request;
                var headers       = re.Headers;

                if (headers.ContainsKey("CurrentUserID"))
                {
                    currentUserID = long.Parse(headers.GetCommaSeparatedValues("CurrentUserID").FirstOrDefault());
                }

                if (headers.ContainsKey("CurrentHomeID"))
                {
                    currentHomeID = long.Parse(headers.GetCommaSeparatedValues("CurrentHomeID").FirstOrDefault());
                }

                var participants = @event.ParticipantUserIDs;

                @event = new BaseCRUDService(currentUserID).Save(@event);
                new BaseCRUDService(currentUserID).AddUserAsParticipantToObject(@event.TargetObjectID, currentUserID, @event.ObjectTypeID);

                foreach (var userID in participants)
                {
                    var eventParticipant = new EventParticipantPostViewModel()
                    {
                        EventID = @event.ID, UserID = long.Parse(userID)
                    };
                    new BaseCRUDService(currentUserID).Save(eventParticipant);
                }

                var participantUsernames = new List <string>();
                var eventParticipants    = new BaseCRUDService(currentUserID).GetCollection <EventParticipantPostViewModel>(x => x.EventID == @event.ID);

                foreach (var participant in eventParticipants)
                {
                    var participantUsername = new BaseCRUDService(currentUserID).GetEntity <UserPostViewModel>(x => x.ID == participant.UserID).Name;
                    participantUsernames.Add(participantUsername);
                }

                @event.EventParticipantNames = string.Join(", ", participantUsernames);

                return(Ok(@event));
            }
            catch (System.Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, $"{ex.Message}"));
            }
        }
Esempio n. 5
0
        public async Task <IHttpActionResult> Post(EventPostViewModel model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
                var city = await DbContext.Cities.FindAsync(model.CityId);

                var sport = await DbContext.Sports.FindAsync(model.SportId);

                var eventType = await DbContext.EventTypes.FindAsync(model.EventTypeId);

                var _event = ModelFactory.Get(model);

                _event.CityId        = city.Id;
                _event.SportName     = sport.Name;
                _event.SportId       = sport.Id;
                _event.EventTypeId   = eventType.Id;
                _event.EventTypeName = eventType.Name;
                _event.OrganizerId   = User.Identity.GetUserId();
                _event.OrganizerName = User.Identity.Name;

                //saving to database
                DbContext.Events.Add(_event);
                var result = await DbContext.SaveChangesAsync();

                if (result > 0)
                {
                    return
                        (Ok(
                             new
                    {
                        _event.Description,
                        _event.Details,
                        _event.Id,
                        _event.SportName,
                        _event.EventTypeName,
                        _event.OrganizerName
                    }));
                }
                return(InternalServerError());
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
 public static string BuildPostEvent(EventPostViewModel @event)
 {
     return($"<div class='row'><div class='col-md-2'>{@event.Name}</div><div class='col-md-3'>{@event.Details}</div><div class='col-md-2'>{@event.StartDate.ToString("dd'/'MM'/'yyyy")}</div><div class='col-md-2'>{@event.EndDate.ToString("dd'/'MM'/'yyyy")}</div><div class='col-md-2'>{@event.EventParticipantNames}</div></div>");
 }