public IHttpActionResult PostSurvey(SurveyViewModel surveyViewModel)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var surveyDto = (ISurveyDTO)DTOFactory.Instance.Create(DTOType.Survey);
                    DTOConverter.FillDTOFromViewModel(surveyDto, surveyViewModel);
                    var surveyBdc = (ISurveyBDC)BDCFactory.Instance.Create(BDCType.Survey);
                    TokenIdentityHelper.FillTokenInfo(surveyDto, Request);
                    surveyDto.CreatedOn   = DateTime.Now;
                    surveyDto.SurveyTitle = surveyViewModel.SurveyTitle;
                    var result = surveyBdc.CreateSurvey(surveyDto);
                    if (result.IsValid())
                    {
                        if (result.Data.Id > 0)
                        {
                            surveyViewModel.Id = result.Data.Id;
                            return(Ok(surveyViewModel));
                        }
                    }

                    return(BadRequest(ModelState));
                }
                catch (Exception ex)
                {
                    //todo log the message
                    return(Error(HttpStatusCode.InternalServerError, "survey", "An internal error has occurred."));
                }
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
示例#2
0
        public async Task <IHttpActionResult> GetSingleEvent(string sub)
        {
            try
            {
                await Task.FromResult(0);

                var ownerId = TokenIdentityHelper.GetOwnerIdFromToken();

                if (string.IsNullOrEmpty(ownerId))
                {
                    return(StatusCode(HttpStatusCode.Forbidden));
                }

                var @event = _eventService.GetSingleEvent(sub);

                // return a dto
                return(Ok(@event));
            }
            catch (Exception ex)
            {
                Log.Logger.Error(ex, "During EventsController.GetSingleEvent");

                return(InternalServerError());
            }
        }
示例#3
0
        public IHttpActionResult GetAccountRequests(bool active)
        {
            try
            {
                var userId = TokenIdentityHelper.GetOwnerIdFromToken();

                var acctRequests = this.repository.GetAccountRequests();
                var roles        = this.repository.GetRoles();
                var users        = this.repository.GetUserProfiles(active);
                var churches     = this.churchRepository.GetList(false, userId);

                var usersInfo = new
                {
                    config       = new { churches = churches, roles = roles },
                    acctRequests = acctRequests,
                    users        = users,
                };

                return(Ok(usersInfo));
            }
            catch (Exception ex)
            {
                ErrorHelper.ProcessError(this.logger, ex, nameof(GetAccountRequests));

                return(InternalServerError(ex));
            }
        }
        public IHttpActionResult Post([FromBody] DTO.TripForCreation tripForCreation)
        {
            string ownerId = TokenIdentityHelper.GetOwnerIdFromToken();

            using (var uow = new CreateTrip(ownerId))
            {
                var uowResult = uow.Execute(tripForCreation);

                switch (uowResult.Status)
                {
                case UnitOfWork.UnitOfWorkStatus.Ok:
                    return(Created <DTO.Trip>
                               (Request.RequestUri + "/" + uowResult.Result.Id.ToString(), uowResult.Result));

                case UnitOfWork.UnitOfWorkStatus.Forbidden:
                    return(StatusCode(HttpStatusCode.Forbidden));

                case UnitOfWork.UnitOfWorkStatus.Invalid:
                    return(BadRequest());

                default:
                    return(InternalServerError());
                }
            }
        }
示例#5
0
        public async Task <IHttpActionResult> Post([FromBody] CarForCreation carForCreation)
        {
            try
            {
                await Task.FromResult(0);

                if (carForCreation == null)
                {
                    return(BadRequest());
                }

                var ownerId = TokenIdentityHelper.GetOwnerIdFromToken();

                if (ownerId == null)
                {
                    return(StatusCode(HttpStatusCode.Forbidden));
                }

                var car = _carService.CreateCarForEvent(ownerId, carForCreation);

                return(Created
                           (Request.RequestUri + "/" + car.CarId, HttpStatusCode.Created));
            }
            catch (Exception ex)
            {
                Log.Logger.Error(ex, "During CarsController.Post");
                return(InternalServerError());
            }
        }
        public IHttpActionResult Get(Guid tripId)
        {
            try
            {
                string ownerId = TokenIdentityHelper.GetOwnerIdFromToken();

                using (var uow = new GetPictures(ownerId, tripId))
                {
                    var uowResult = uow.Execute();

                    switch (uowResult.Status)
                    {
                    case UnitOfWork.UnitOfWorkStatus.Ok:
                        return(Ok(uowResult.Result));

                    case UnitOfWork.UnitOfWorkStatus.NotFound:
                        return(NotFound());

                    case UnitOfWork.UnitOfWorkStatus.Forbidden:
                        return(StatusCode(HttpStatusCode.Forbidden));

                    default:
                        return(InternalServerError());
                    }
                }
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }
        public IHttpActionResult Post(Guid tripId, [FromBody] DTO.PictureForCreation pictureForCreation)
        {
            try
            {
                string ownerId = TokenIdentityHelper.GetOwnerIdFromToken();

                using (var uow = new CreatePicture(ownerId, tripId))
                {
                    var uowResult = uow.Execute(pictureForCreation);

                    switch (uowResult.Status)
                    {
                    case UnitOfWork.UnitOfWorkStatus.Ok:
                        return(Created <DTO.Picture>
                                   (Request.RequestUri + "/" + uowResult.Result.Id.ToString(), uowResult.Result));

                    case UnitOfWork.UnitOfWorkStatus.Invalid:
                        return(BadRequest());

                    case UnitOfWork.UnitOfWorkStatus.NotFound:
                        return(NotFound());

                    case UnitOfWork.UnitOfWorkStatus.Forbidden:
                        return(StatusCode(HttpStatusCode.Forbidden));

                    default:
                        return(InternalServerError());
                    }
                }
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }
        public IHttpActionResult Post([FromBody] Dictionary <string, string> claimsIdentity)
        {
            try
            {
                var ownerId = TokenIdentityHelper.GetOwnerIdFromToken();

                //using (var uow = new CreateEvent(ownerId))
                //{
                //    var uowResult = uow.Execute(tripForCreation);

                //    switch (uowResult.Status)
                //    {
                //        case UnitOfWorkStatus.Ok:
                //            return Created
                //                (Request.RequestUri + "/" + uowResult.Result.Id, uowResult.Result);

                //        case UnitOfWorkStatus.Forbidden:
                //            return StatusCode(HttpStatusCode.Forbidden);

                //        case UnitOfWorkStatus.Invalid:
                //            return BadRequest();

                //        default:
                //            return InternalServerError();
                //    }
                //}
                return(Ok());
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }
示例#9
0
        public IHttpActionResult GetMetadata(int churchId)
        {
            try
            {
                var userId = TokenIdentityHelper.GetOwnerIdFromToken();

                var response = _repository.GetMetadata(churchId, userId);

                var metadata = response.Entity;

                var ret = new
                {
                    MemberList = metadata.Members.Select(m => new { Id = m.id, Desc = $"{m.FirstName} {m.LastName}".Trim() }),
                    TeamTypes  = metadata.EnumTypes,
                    TeamEnums  = metadata.Enums,
                    ChurchList = metadata.Churches.Select(c => new { Id = c.id, Name = c.Name }),
                };

                return(Ok(ret));
            }
            catch (Exception ex)
            {
                ErrorHelper.ProcessError(_logger, ex, nameof(GetMetadata));

                return(InternalServerError());
            }
        }
        public IHttpActionResult Delete(Guid tripId, Guid pictureId)
        {
            try
            {
                // the user can delete.  But can he also delete THIS picture?
                string ownerId = TokenIdentityHelper.GetOwnerIdFromToken();

                using (var uow = new DeletePicture(ownerId, tripId, pictureId))
                {
                    var uowResult = uow.Execute();

                    switch (uowResult.Status)
                    {
                    case UnitOfWork.UnitOfWorkStatus.Ok:
                        return(StatusCode(HttpStatusCode.NoContent));

                    case UnitOfWork.UnitOfWorkStatus.Invalid:
                        return(BadRequest());

                    case UnitOfWork.UnitOfWorkStatus.NotFound:
                        return(NotFound());

                    case UnitOfWork.UnitOfWorkStatus.Forbidden:
                        return(StatusCode(HttpStatusCode.Forbidden));

                    default:
                        return(InternalServerError());
                    }
                }
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }
示例#11
0
        public async Task <IHttpActionResult> Get()
        {
            try
            {
                await Task.FromResult(0);

                var ownerId = TokenIdentityHelper.GetOwnerIdFromToken();

                if (ownerId == null)
                {
                    return(StatusCode(HttpStatusCode.Forbidden));
                }

                Log.Logger.Debug("EventRepository.GetEvents.Execute(4)");

                var events = _eventService.GetEvents(ownerId);

                // return a dto
                return(Ok(events));
            }
            catch (Exception ex)
            {
                Log.Logger.Error(ex, "During EventsController.Get");
                return(InternalServerError());
            }
        }
示例#12
0
        public IHttpActionResult Get()
        {
            try
            {
                string ownerId = TokenIdentityHelper.GetOwnerIdFromToken();

                using (var uow = new GetTrips(ownerId))
                {
                    var uowResult = uow.Execute();

                    switch (uowResult.Status)
                    {
                    case UnitOfWork.UnitOfWorkStatus.Ok:
                        return(Ok(uowResult.Result));

                    default:
                        return(InternalServerError());
                    }
                }
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }
示例#13
0
        public async Task <IHttpActionResult> Put([FromBody] Event @event)
        {
            try
            {
                await Task.FromResult(0);

                var ownerId = TokenIdentityHelper.GetOwnerIdFromToken();


                if (@event == null)
                {
                    return(BadRequest());
                }

                if (ownerId == null || ownerId != @event.OwnerId)
                {
                    return(Unauthorized());
                }

                var updatedEvent = _eventService.UpdateEvent(@event);

                // return a dto
                return(Ok(updatedEvent));
            }
            catch (Exception ex)
            {
                Log.Logger.Error(ex, "During EventsController.Put");
                return(InternalServerError());
            }
        }
示例#14
0
        public async Task <IHttpActionResult> GetMetadata()
        {
            var userId = TokenIdentityHelper.GetOwnerIdFromToken();

            var metadata = this.repo.GetMetadata(userId);

            var result = new {
                churches = metadata.Churches,
                enums    = metadata.Enums
            };

            return(Ok(result));
        }
示例#15
0
        public IHttpActionResult GetMetadata(int churchId)
        {
            var userId = TokenIdentityHelper.GetOwnerIdFromToken();

            var metadata = this.repository.GetMetadata(churchId, userId);

            var ret = new
            {
                StatusList = metadata.Enums.Where(i => i.AppEnumTypeName == "MemberStatus").ToArray(),
                MemberList = metadata.Members.Select(m => new { Id = m.id, Name = m.FullName, TeamId = m.TeamId }),
                TeamList   = metadata.Teams.Select(t => new { Id = t.Id, Name = t.Name }),
                ChurchList = metadata.Churches.Select(c => new { Id = c.id, Name = c.Name })
            };

            return(Ok(ret));
        }
示例#16
0
        public IHttpActionResult GetUser()
        {
            try
            {
                var userId = TokenIdentityHelper.GetOwnerIdFromToken();

                var userProfile = this.repository.GetUserProfile(userId);

                return(Ok(userProfile));
            }
            catch (Exception ex)
            {
                ErrorHelper.ProcessError(this.logger, ex, nameof(GetUser));

                return(InternalServerError(ex));
            }
        }
示例#17
0
        public async Task <IHttpActionResult> Post([FromBody] EventForCreation eventForCreation)
        {
            try
            {
                await Task.FromResult(0);

                var ownerId = TokenIdentityHelper.GetOwnerIdFromToken();

                if (eventForCreation == null)
                {
                    return(BadRequest());
                }

                if (ownerId == null)
                {
                    return(StatusCode(HttpStatusCode.Forbidden));
                }

                // map to entity
                var @event = Mapper.Map <EventForCreation, Event>(eventForCreation);

                // create guid
                var id = Guid.NewGuid();
                @event.EventId = id;
                @event.OwnerId = ownerId;
                @event.Cars    = new Collection <Car>();

                var addedEvent = _eventService.AddEvent(@event);

                // return a dto
                return(Ok(addedEvent));
            }
            catch (Exception ex)
            {
                Log.Logger.Error(ex, "During EventsController.Post");
                return(InternalServerError());
            }
        }
示例#18
0
        public IHttpActionResult ProcessAccountRequest(AccountRequest accountRequest)
        {
            try
            {
                // example of how to get the user's id
                var userId = TokenIdentityHelper.GetOwnerIdFromToken();

                accountRequest.ReviewerUserId = userId;

                var identityId = this.repository.ProcessAccountRequest(accountRequest);

                var user = this.repository.GetUserProfile(identityId);

                // return the new user
                return(Ok(user));
            }
            catch (Exception ex)
            {
                ErrorHelper.ProcessError(this.logger, ex, nameof(GetAccountRequests));

                return(InternalServerError(ex));
            }
        }
示例#19
0
        public IHttpActionResult GetProfileMetadata(int churchId)
        {
            var userId = TokenIdentityHelper.GetOwnerIdFromToken();

            var list = _repository.GetProfileMetadata(churchId, userId);

            var ret = new
            {
                UserChurches                = list.Where(i => i.AppEnumTypeName == "UserChurches").ToArray(),
                ChurchList                  = list.Where(i => i.AppEnumTypeName == "Churches").ToArray(),
                MemberList                  = list.Where(i => i.AppEnumTypeName == "Members").ToArray(),
                TeamList                    = list.Where(i => i.AppEnumTypeName == "Teams").ToArray(),
                ContactInfoTypeList         = list.Where(i => i.AppEnumTypeName == "ContactInfoType").ToArray(),
                ContactInfoLocationTypeList = list.Where(i => i.AppEnumTypeName == "ContactInfoLocationType").ToArray(),
                PhoneTypeList               = list.Where(i => i.AppEnumTypeName == "PhoneType").ToArray(),
                MemberStatusChangeTypeList  = list.Where(i => i.AppEnumTypeName == "MemberStatusChangeType").ToArray(),
                MemberStatusList            = list.Where(i => i.AppEnumTypeName == "MemberStatus").ToArray(),
                MemberTypeList              = list.Where(i => i.AppEnumTypeName == "MemberType").ToArray(),
                ActivityTypeList            = list.Where(i => i.AppEnumTypeName == "ActivityType").ToArray(),
                ActivityResponseType        = list.Where(i => i.AppEnumTypeName == "ActivityResponseType").ToArray()
            };

            return(Ok(ret));
        }
示例#20
0
        public async Task <HttpResponseMessage> UploadFile()
        {
            // https://stackoverflow.com/questions/10320232/how-to-accept-a-file-post
            HttpRequestMessage request = this.Request;

            if (!request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            string root     = System.Web.HttpContext.Current.Server.MapPath("~/App_Data/uploads");
            var    provider = new MultipartFormDataStreamProvider(root);

            // Reference this for large file uploads:
            // https://www.strathweb.com/2012/09/dealing-with-large-files-in-asp-net-web-api/
            var files = await Request.Content.ReadAsMultipartAsync(provider);

            var localFilePath = provider.FileData.First().LocalFileName;

            System.IO.File.Move(localFilePath, $"{localFilePath}.mdb");

            localFilePath += ".mdb";

            var userId = TokenIdentityHelper.GetOwnerIdFromToken();

            try
            {
                await Task.Run(() => { this.importService.ImportMdbFile(localFilePath, userId); });

                return(await Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK)));
            }
            catch (Exception ex)
            {
                return(await Task.FromResult(new HttpResponseMessage(HttpStatusCode.InternalServerError)));
            }
        }
示例#21
0
        public IHttpActionResult Patch(Guid tripId,
                                       [FromBody] Marvin.JsonPatch.JsonPatchDocument <DTO.Trip> tripPatchDocument)
        {
            try
            {
                // is the user allowed to update THIS trip? => check in UnitOfWork
                string ownerId = TokenIdentityHelper.GetOwnerIdFromToken();

                using (var uow = new PartiallyUpdateTrip(ownerId, tripId))
                {
                    var uowResult = uow.Execute(tripPatchDocument);

                    switch (uowResult.Status)
                    {
                    case UnitOfWork.UnitOfWorkStatus.Ok:
                        return(Ok(uowResult.Result));

                    case UnitOfWork.UnitOfWorkStatus.Invalid:
                        return(BadRequest());

                    case UnitOfWork.UnitOfWorkStatus.Forbidden:
                        return(StatusCode(HttpStatusCode.Forbidden));

                    case UnitOfWork.UnitOfWorkStatus.NotFound:
                        return(NotFound());

                    default:
                        return(InternalServerError());
                    }
                }
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }
示例#22
0
        public IHttpActionResult Get(int churchId, string statusIds, int page = 1, int pageSize = 10000)
        {
            try
            {
                // example of how to get the user's id
                var userId = TokenIdentityHelper.GetOwnerIdFromToken();


                if (churchId == 0)
                {
                    return(BadRequest());
                }

                if (string.IsNullOrWhiteSpace(statusIds))
                {
                    statusIds = "49-50";
                }

                var idlist = statusIds.Split(new[] { '-' }, StringSplitOptions.RemoveEmptyEntries);

                var list = _repository.GetList(churchId, Array.ConvertAll <string, int>(idlist, int.Parse));

                var totalCount = list.Count();
                var totalPages = (int)Math.Ceiling((decimal)totalCount / pageSize);

                // add pagination infor to the response header
                var urlHelper = new UrlHelper(Request);
                var prevLink  = page > 1 ? urlHelper.Link("Get"
                                                          , new {
                    churchId    = churchId
                    , statusIds = statusIds
                    , page      = page - 1
                    , pageSize  = pageSize
                }) : "";
                var nextLink = page < totalPages?urlHelper.Link("Get"
                                                                , new
                {
                    churchId    = churchId
                    , statusIds = statusIds
                    , page      = page + 1
                    , pageSize  = pageSize
                }) : "";

                var paginationHeader = new
                {
                    currentPage      = page,
                    pageSize         = pageSize,
                    totalCount       = totalCount,
                    totalPages       = totalPages,
                    previousPageLink = prevLink,
                    nextPageLink     = nextLink
                };

                HttpContext.Current.Response.Headers.Add("X-Pagination"
                                                         , JsonConvert.SerializeObject(paginationHeader));

                return(Ok(list
                          .Skip(pageSize * (page - 1))
                          .Take(pageSize)));
            }
            catch (Exception ex)
            {
                ErrorHelper.ProcessError(_logger, ex, nameof(Get));

                return(InternalServerError());
            }
        }
示例#23
0
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            var             allowedOrigin     = context.OwinContext.Get <string>("as:clientAllowedOrigin") ?? "*";
            ApplicationUser user              = new ApplicationUser();
            var             claimsIdentity    = new ClaimsIdentity(context.Options.AuthenticationType);
            var             concatenatedRoles = "";

            context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { allowedOrigin });
            AspNetUserProperty userProperty;

            using (AuthRepository _repo = new AuthRepository())
            {
                if (TokenIdentityHelper.IsCredentialForSingleClick(context.Password))
                {
                    var userId = TokenIdentityHelper.GetUserIdSingleClickSignInToken(context.Password);
                    user = await _repo.FindByUserIdAsync(userId);
                }
                else
                {
                    user = await _repo.FindUser(context.UserName, context.Password);
                }

                if (user == null)
                {
                    context.SetError("invalid_grant", "The user name or password is incorrect.");
                    return;
                }
                else if (!user.IsActive || _repo.IsLockedOut(user.Id))
                {
                    context.SetError("blocked_user", "Your account is disabled.");
                    return;
                }

                var userRoles = await _repo.FindRolesAsync(user.Id);

                foreach (var role in userRoles)
                {
                    claimsIdentity.AddClaim(new Claim(ClaimTypes.Role, role));
                }
                concatenatedRoles = string.Join(",", userRoles);

                //Add user property
                userProperty = await _repo.FindUserProperty(user.Id);

                //addingclaims
                claimsIdentity.AddClaim(new Claim(ClaimTypes.Name, user.FirstName));
                claimsIdentity.AddClaim(new Claim(GlobalConstants.Account.ClaimTypes.UserName, user.UserName));
                claimsIdentity.AddClaim(new Claim(GlobalConstants.Account.ClaimTypes.Subject, user.Id));
                claimsIdentity.AddClaim(new Claim(GlobalConstants.Account.ClaimTypes.Issuer, GlobalConstants.EhrsIssuerUri));
            }

            Dictionary <string, string> properties = new Dictionary <string, string>
            {
                {
                    "as:client_id", (context.ClientId == null) ? string.Empty : context.ClientId
                }
            };

            properties.Add("userName", context.UserName);
            properties.Add("firstName", user.FirstName);
            properties.Add("roles", concatenatedRoles);

            var authProps = new AuthenticationProperties(properties);
            var ticket    = new AuthenticationTicket(claimsIdentity, authProps);

            context.Validated(ticket);
        }
示例#24
0
        public IHttpActionResult Get(int page = 1, int pageSize = 10000, bool showAll = false)
        {
            try
            {
                if (page == 0)
                {
                    page = 1;
                }

                if (pageSize == 0)
                {
                    pageSize = 1000;
                }

                var userId = TokenIdentityHelper.GetOwnerIdFromToken();

                var list = _repository.GetList(showAll, userId);

                var totalCount = list.Count();
                var totalPages = (int)Math.Ceiling((decimal)totalCount / pageSize);

                // add pagination infor to the response header
                var urlHelper = new UrlHelper(Request);
                var prevLink  = page > 1 ? urlHelper.Link("Get"
                                                          , new
                {
                    page     = page - 1,
                    pageSize = pageSize,
                    showAll  = showAll
                }) : "";
                var nextLink = page < totalPages?urlHelper.Link("Get"
                                                                , new
                {
                    page     = page + 1,
                    pageSize = pageSize,
                    showAll  = showAll
                }) : "";

                var paginationHeader = new
                {
                    currentPage      = page,
                    pageSize         = pageSize,
                    totalCount       = totalCount,
                    totalPages       = totalPages,
                    previousPageLink = prevLink,
                    nextPageLink     = nextLink
                };

                HttpContext.Current.Response.Headers.Add("X-Pagination"
                                                         , JsonConvert.SerializeObject(paginationHeader));

                return(Ok(list
                          .Skip(pageSize * (page - 1))
                          .Take(pageSize)));
            }
            catch (Exception ex)
            {
                ErrorHelper.ProcessError(_logger, ex, nameof(Get));

                return(InternalServerError());
            }
        }