Exemplo n.º 1
0
        public HttpResponseMessage Get(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, "download id is empty"));
            }

            var attachmentId = OneTimeAccessService.GetFileIdForTicket(id);

            if (attachmentId != Guid.Empty)
            {
                var attachment  = UnitOfWork.AttachmentsRepository.Find(attachmentId);
                var filePath    = HostingEnvironment.MapPath(attachment.Url);
                var fileContent = System.IO.File.ReadAllBytes(filePath);

                var response = new HttpResponseMessage(HttpStatusCode.OK);
                var stream   = new System.IO.FileStream(filePath, FileMode.Open, FileAccess.Read);
                response.Content = new StreamContent(stream);
                response.Content.Headers.ContentDisposition          = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
                response.Content.Headers.ContentType                 = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
                response.Content.Headers.ContentDisposition.FileName = attachment.FileName;

                return(response);
            }

            return(new HttpResponseMessage(HttpStatusCode.Unauthorized));
        }
Exemplo n.º 2
0
        public IHttpActionResult GetFile(Guid id)
        {
            if (id == Guid.Empty)
            {
                return(BadRequest("id is empty"));
            }

            var attachment = UnitOfWork.AttachmentsRepository.Find(id);

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

            var filePath = HostingEnvironment.MapPath(attachment.Url);

            if (!System.IO.File.Exists(filePath))
            {
                return(NotFound());
            }

            var oneTimeAccessId = string.Empty;
            var currentUser     = ServiceContext.CurrentUser;
            var orgUser         = ServiceContext.CurrentUser as OrgUser;

            if (currentUser is SuperUser)
            {
                oneTimeAccessId = OneTimeAccessService.AddFileIdForTicket(id);
            }
            else
            {
                var project  = attachment.FormValue.FilledForm.Project;
                var template = attachment.FormValue.FilledForm.FormTemplate;

                var threadAssignment = UnitOfWork.ThreadAssignmentsRepository.AllAsNoTracking
                                       .Where(x => x.FormTemplateId == template.Id && x.OrgUserId == CurrentUser.Id)
                                       .SingleOrDefault();
                var projectAssignment = UnitOfWork.AssignmentsRepository.AllAsNoTracking
                                        .Where(x => x.ProjectId == project.Id && x.OrgUserId == CurrentUser.Id)
                                        .SingleOrDefault();

                if (projectAssignment == null && threadAssignment == null)
                {
                    return(Unauthorized());
                }

                var authorized = false;
                if (projectAssignment != null)
                {
                    authorized = projectAssignment.CanView;
                }

                if (threadAssignment != null)
                {
                    authorized = threadAssignment.CanView;
                }

                if (!authorized)
                {
                    return(Unauthorized());
                }

                oneTimeAccessId = OneTimeAccessService.AddFileIdForTicket(id);
            }

            var result = new DownloadRequestDTO {
                AccessId = oneTimeAccessId
            };

            return(Ok(result));
        }
Exemplo n.º 3
0
        public static void Config()
        {
            #region Projects and Assignments

            Mapper.CreateMap <Project, ProjectDTO>().ReverseMap();
            Mapper.CreateMap <AssignmentDTO, ProjectDTO>();
            Mapper.CreateMap <Assignment, ProjectAssignmentDTO>()
            .AfterMap((src, dest) => { dest.OrgUserName = src.OrgUser.ToString(); })
            .AfterMap((src, dest) => { dest.IsRootUser = src.OrgUser.IsRootUser; })
            .AfterMap((src, dest) => { dest.AccountType = src.OrgUser.AccountType; })
            .AfterMap((src, dest) => { dest.Email = src.OrgUser.Email; });
            Mapper.CreateMap <ProjectAssignmentDTO, Assignment>();

            Mapper.CreateMap <EmailRecipient, EmailRecipientDTO>()
            .AfterMap((src, dest) => { dest.IsRootUser = src.OrgUser.IsRootUser; })
            .AfterMap((src, dest) => { dest.OrgUserName = src.OrgUser.ToString(); })
            .AfterMap((src, dest) => { dest.Email = src.OrgUser.Email; });

            #endregion Projects and Assignments

            #region Form Templates and Categories

            Mapper.CreateMap <FormTemplateCategory, FormTemplateCategoryDTO>().ReverseMap();
            Mapper.CreateMap <FormTemplate, FormTemplateDTO>().ReverseMap();
            Mapper.CreateMap <FormTemplateDTO, FormTemplate>()
            .ForMember(f => f.MetricGroups, opt => opt.Ignore());
            Mapper.CreateMap <EditBasicDetailsReqDTO, FormTemplate>();

            Mapper.CreateMap <ThreadAssignmentDTO, FormTemplateDTO>();
            Mapper.CreateMap <ThreadAssignment, ThreadAssignmentDTO>()
            .AfterMap((src, dest) => { dest.OrgUserName = src.OrgUser.ToString(); })
            .AfterMap((src, dest) => { dest.IsRootUser = src.OrgUser.IsRootUser; })
            .AfterMap((src, dest) => { dest.AccountType = src.OrgUser.AccountType; })
            .AfterMap((src, dest) => { dest.Email = src.OrgUser.Email; });
            Mapper.CreateMap <ThreadAssignmentDTO, ThreadAssignment>();

            #endregion Form Templates and Categories

            #region Data Lists

            Mapper.CreateMap <DataList, DataListDTO>();
            Mapper.CreateMap <DataListDTO, DataList>()
            .ForMember(x => x.AllItems, opt => opt.MapFrom(src => src.Items));
            Mapper.CreateMap <DataListItem, DataListItemDTO>();
            Mapper.CreateMap <DataListItemDTO, DataListItem>().ForMember(f => f.Attributes, opt => opt.Ignore());
            Mapper.CreateMap <DataListItemAttr, DataListItemAttrDTO>().ReverseMap();
            Mapper.CreateMap <DataListRelationship, DataListRelationshipDTO>();
            Mapper.CreateMap <DataListRelationshipDTO, DataListRelationship>();

            Mapper.CreateMap <DataList, GetDataListsResItemDTO>();

            #endregion Data Lists

            #region Metric Groups

            Mapper.CreateMap <MetricGroup, MetricGroupDTO>()
            .AfterMap((src, dest) =>
            {
                dest.IsAdHoc            = src.DataList?.IsAdHoc ?? false;
                dest.IsDataListRepeater = src.DataListId.HasValue;
                dest.AdHocItems         = src.DataList?.IsAdHoc ?? false ? src.DataList.Items.Select(i => Mapper.Map <DataListItemDTO>(i)).ToList() : Enumerable.Empty <DataListItemDTO>().ToList();
            });
            Mapper.CreateMap <MetricGroupDTO, MetricGroup>()
            .ForMember(f => f.Metrics, opt => opt.Ignore());

            #endregion Metric Groups

            #region Metrics

            // config metrics mappings
            Mapper.CreateMap <Metric, MetricDTO>()
            .Include <DateMetric, DateMetricDTO>()
            .Include <TimeMetric, TimeMetricDTO>()
            .Include <DichotomousMetric, DichotomousMetricDTO>()
            .Include <FreeTextMetric, FreeTextMetricDTO>()
            .Include <MultipleChoiceMetric, MultipleChoiceMetricDTO>()
            .Include <NumericMetric, NumericMetricDTO>()
            .Include <RateMetric, RateMetricDTO>()
            .Include <AttachmentMetric, AttachmentMetricDTO>()
            .AfterMap((src, dest) => dest.Type = ObjectContext.GetObjectType(src.GetType()).Name);

            Mapper.CreateMap <MetricDTO, Metric>()
            .Include <DateMetricDTO, DateMetric>()
            .Include <TimeMetricDTO, TimeMetric>()
            .Include <DichotomousMetricDTO, DichotomousMetric>()
            .Include <FreeTextMetricDTO, FreeTextMetric>()
            .Include <MultipleChoiceMetricDTO, MultipleChoiceMetric>()
            .Include <NumericMetricDTO, NumericMetric>()
            .Include <RateMetricDTO, RateMetric>()
            .Include <AttachmentMetricDTO, AttachmentMetric>();

            Mapper.CreateMap <DateMetric, DateMetricDTO>().ReverseMap();
            Mapper.CreateMap <TimeMetric, TimeMetricDTO>().ReverseMap();
            Mapper.CreateMap <DichotomousMetric, DichotomousMetricDTO>().ReverseMap();
            Mapper.CreateMap <FreeTextMetric, FreeTextMetricDTO>().ReverseMap();
            Mapper.CreateMap <MultipleChoiceMetric, MultipleChoiceMetricDTO>()
            .AfterMap((src, dest) =>
            {
                dest.IsAdHoc    = src.DataList?.IsAdHoc ?? false;
                dest.AdHocItems = src.DataList?.IsAdHoc ?? false ? src.DataList.Items.Select(i => Mapper.Map <DataListItemDTO>(i)).ToList() : Enumerable.Empty <DataListItemDTO>().ToList();
            });
            Mapper.CreateMap <MultipleChoiceMetricDTO, MultipleChoiceMetric>();
            Mapper.CreateMap <NumericMetric, NumericMetricDTO>().ReverseMap();
            Mapper.CreateMap <RateMetricDTO, RateMetric>();
            Mapper.CreateMap <RateMetric, RateMetricDTO>()
            .AfterMap((src, dest) =>
            {
                dest.IsAdHoc    = src.DataList?.IsAdHoc ?? false;
                dest.AdHocItems = src.DataList?.IsAdHoc ?? false ? src.DataList.Items.Select(i => Mapper.Map <DataListItemDTO>(i)).ToList() : Enumerable.Empty <DataListItemDTO>().ToList();
            });
            Mapper.CreateMap <AttachmentDTO, Attachment>();
            Mapper.CreateMap <Attachment, AttachmentDTO>()
            .AfterMap((src, dest) => { dest.TypeString = src.Type.Name; })
            .AfterMap((src, dest) => { dest.OneTimeAccessId = OneTimeAccessService.AddFileIdForTicket(src.Id); });

            Mapper.CreateMap <AttachmentMetric, AttachmentMetricDTO>();
            Mapper.CreateMap <AttachmentMetricDTO, AttachmentMetric>()
            .ForMember(m => m.AllowedAttachmentTypes, opt => opt.Ignore());

            #endregion Metrics

            #region Form Values and Filled Forms

            Mapper.CreateMap <FormValue, FormValueDTO>().ForMember(m => m.TimeValue, opt => opt.Ignore())
            .AfterMap((src, dest) =>
            {
                if (!src.TimeValue.HasValue)
                {
                    return;
                }
                dest.TimeValue = DateTime.Today.AddMinutes(src.TimeValue.Value.TotalMinutes);
            });
            Mapper.CreateMap <FormValueDTO, FormValue>()
            .ForMember(m => m.Attachments, opt => opt.Ignore())
            .ForMember(m => m.TimeValue, opt => opt.Ignore())
            .AfterMap((src, dest) =>
            {
                if (!src.TimeValue.HasValue)
                {
                    return;
                }
                dest.TimeValue = new System.TimeSpan(src.TimeValue.Value.Hour, src.TimeValue.Value.Minute, 0);
            });
            Mapper.CreateMap <FilledForm, FilledFormDTO>();
            Mapper.CreateMap <FilledFormDTO, FilledForm>()
            .ForMember(m => m.FilledBy, opt => opt.Ignore());

            Mapper.CreateMap <FilledFormLocation, FilledFormLocationDTO>().ReverseMap();

            #endregion Form Values and Filled Forms

            #region Organisations and Users

            Mapper.CreateMap <User, UserDTO>().ReverseMap();
            Mapper.CreateMap <SuperUser, UserDTO>().ReverseMap();

            Mapper.CreateMap <Organisation, OrganisationDTO>()
            .ForMember(x => x.RootUserEmail, opt => opt.MapFrom(x => x.RootUser.Email))
            .ForMember(x => x.RootUser, opt => opt.Ignore())
            .ReverseMap();

            Mapper.CreateMap <OrgUser, OrgUserDTO>();
            Mapper.CreateMap <OrgUserDTO, OrgUser>()
            .ForMember(dest => dest.Type, opts => opts.Ignore())
            .AfterMap((src, dest) => { dest.TypeId = src.Type.Id; });
            Mapper.CreateMap <OrgUserType, OrgUserTypeDTO>().ReverseMap();

            Mapper.CreateMap <OrganisationTeam, OrganisationTeamDTO>().ReverseMap();
            Mapper.CreateMap <OrgTeamUser, OrgTeamUserDTO>().ReverseMap();

            Mapper.CreateMap <OrganisationInvitation, OrgInvitationDTO>().ReverseMap();
            Mapper.CreateMap <OrgConnectionRequest, OrgConnectionRequestDTO>().ReverseMap();
            Mapper.CreateMap <OrgRequest, OrgRequestDTO>().ReverseMap();

            Mapper.CreateMap <DataList, GetDataListsResItemDTO>();

            Mapper.CreateMap <PaymentRecord, PaymentRecordDTO>().ReverseMap();
            Mapper.CreateMap <Voucher, VoucherDTO>().ReverseMap();
            Mapper.CreateMap <Subscription, SubscriptionDTO>().ReverseMap();
            Mapper.CreateMap <SubscriptionPlan, SubscriptionPlanDTO>().ReverseMap();

            #endregion Organisations and Users

            Mapper.CreateMap <Feedback, FeedbackDTO>().ReverseMap();
        }