Beispiel #1
0
        /// <summary>
        /// Добавить приглашение
        /// </summary>
        /// <param name="addedInvitation">Добавляемое приглашение</param>
        /// <returns>Приглашение</returns>
        public Invitation Add(InvitationDto addedInvitation)
        {
            Contract.Argument.IsNotNull(addedInvitation, nameof(addedInvitation));

            var alien       = _alienService.Add(addedInvitation.Alien);
            var employee    = _employeeService.Add(addedInvitation.Employee);
            var visitDetail = _visitDetailService.Add(addedInvitation.VisitDetail);

            var foreignParticipants = new List <ForeignParticipant>();

            foreach (var foreignParticipantDto in addedInvitation.ForeignParticipants)
            {
                var foreignParticipant = _foreignParticipantService.Add(foreignParticipantDto);
            }

            var now = _clock.Now();

            var invitation = _invitationRepository.Create(
                alienId: alien.Id,
                employeeId: employee.Id,
                visitDetailId: visitDetail.Id,
                foreignParticipants: foreignParticipants,
                createdDate: now,
                updateDate: now,
                invitationStatus: InvitationStatus.Creating);

            return(invitation);
        }
        /// <summary>
        /// Добавить приглашение
        /// </summary>
        /// <param name="employee">Сотрудник, который организует приглашение</param>
        /// <param name="addedInvitation">Новое приглашение</param>
        /// <returns></returns>
        public Invitation Add(Employee employee, InvitationDto addedInvitation)
        {
            // TODO: сейчас приглашаемый иностранец всегда должен быть задан при создании приглашения
            var alien      = _alienRepository.Add(addedInvitation.Alien);
            var invitation = Create(alien: alien, employee: employee);

            // TODO: сейчас сопровождающие инстранца могут быть не заданы при создании приглашения
            if (addedInvitation.ForeignParticipants != null)
            {
                var foreignParticipants = new List <ForeignParticipant>();
                foreach (var foreignParticipantDto in addedInvitation.ForeignParticipants)
                {
                    var foreignParticipant = _foreignParticipantRepository.Add(foreignParticipantDto);
                    foreignParticipants.Add(foreignParticipant);
                }

                invitation.SetForeignParticipants(foreignParticipants);
            }

            // TODO: сейчас детали визита могут быть не заданы при создании приглашения
            if (addedInvitation.VisitDetail != null)
            {
                var visitDetail = _visitDetailRepository.Add(addedInvitation.VisitDetail);
                invitation.SetVisitDetail(visitDetail);
            }

            return(invitation);
        }
        public async Task <IActionResult> InviteMember(InvitationDto invitation)
        {
            int environmentOwnerId = await _repo.GetEnvironmentOwnerId(invitation.EnvironmentId);

            if (!this.VerifyUser(environmentOwnerId))
            {
                return(Unauthorized());
            }

            if (invitation.SendMail)
            {
                Invitation createdInvitation = await _repo.InviteMemberByMail(invitation.InviteeName, invitation.EnvironmentId);

                if (createdInvitation != null)
                {
                    // Wenn keine Serial generiert wurde, ist der Benutzer bereits vorhanden
                    if (createdInvitation.Serial == string.Empty)
                    {
                        return(NoContent());
                    }
                    //TODO Send Mail
                    return(NoContent());
                }
            }
            else
            {
                if (await _repo.InviteMember(invitation.InviteeName, invitation.EnvironmentId))
                {
                    return(NoContent());
                }
            }

            throw new Exception("Failed to create invitation");
        }
Beispiel #4
0
        public IActionResult Create([FromBody] Invitation invitation)
        {
            var user = _context.Users.SingleOrDefault(u => u.Id == invitation.inviterId);

            if (user == null)
            {
                return(Ok(new {
                    success = false,
                    error = $"Can't find user with id = {invitation.inviterId}"
                }));
            }

            if (invitation.city == null)
            {
                return(Ok(new {
                    success = false,
                    error = $"City is required."
                }));
            }

            _context.Invitaitons.Add(invitation);
            _context.SaveChanges();

            InvitationDto invitationDto = _mapper.Map <InvitationDto>(invitation);

            return(Ok(new {
                success = true,
                invitation = invitationDto
            }));
        }
        public void SendInvitation(InvitationDto dto)
        {
            var invitation = Mapper.Map <Invitation>(dto);

            this.context.Invitations.Add(invitation);
            this.context.SaveChanges();
        }
Beispiel #6
0
        public async Task <GetAllResponse <InvitationDto> > GetAllCreatedInvitationsAsync(int id, uint page = 0, uint pageSize = 0, string sorting = null)
        {
            Expression <Func <Invitation, bool> > filter = (entity) => entity.InvitatorId == id;
            int totalCount;
            IList <Invitation> entities;
            int skip = (int)(page * pageSize);
            int take = (int)pageSize;

            using (var uow = UowManager.CurrentOrCreateNew(true))
            {
                entities = await InvitationDomainService.RetrieveAllAsync(filter, sorting, skip, take);

                totalCount = take > 0 || skip > 0 && (entities.Count == take || skip != 0) ?
                             await InvitationDomainService.GetTotalCountAsync(filter) :
                             entities.Count;
            }
            List <InvitationDto> entityDtos = new List <InvitationDto>(entities.Count);

            foreach (Invitation entity in entities)
            {
                InvitationDto entityDto = new InvitationDto();
                entityDto.MapFromEntity(entity);
                entityDto.NormalizeAsResponse();
                entityDtos.Add(entityDto);
            }
            return(new GetAllResponse <InvitationDto>(entityDtos, totalCount));
        }
Beispiel #7
0
        public async Task <IActionResult> AcceptInvitation([FromBody] InvitationDto model)
        {
            var currentUser = await _identityService.GetCurrentPersonIdentityAsync();

            if (currentUser == null)
            {
                return(BadRequest(new MessageDto()
                {
                    Success = false, Message = "Invalid user."
                }));
            }

            var invitation = await _documentService.GetInvitationById(model.InvitationId);

            if (invitation == null)
            {
                return(BadRequest(new MessageDto()
                {
                    Success = false, Message = "Invalid invitation."
                }));
            }

            if (invitation.ToUserId != currentUser.Id)
            {
                return(BadRequest(new MessageDto()
                {
                    Success = false, Message = "Invitation is not for current user."
                }));
            }

            invitation.Status = (int)InvitationStatus.Accepted;

            MessageDto result = await _documentService.UpdateInvitation(invitation);

            if (result.Success)
            {
                MessageDto result2 = new MessageDto();

                if (invitation.ActionType == (int)InvitationActionType.Edit)
                {
                    result2 = await _documentService.AssignClientToViewDocument(invitation.Document.OwnerId, currentUser.Id, invitation.DocumentId);

                    result2 = await _documentService.AssignClientToEditDocument(invitation.Document.OwnerId, currentUser.Id, invitation.DocumentId);
                }
                else if (invitation.ActionType == (int)InvitationActionType.View)
                {
                    result2 = await _documentService.AssignClientToViewDocument(invitation.Document.OwnerId, currentUser.Id, invitation.DocumentId);
                }

                if (result2.Success)
                {
                    return(new OkObjectResult(result2));
                }
                return(BadRequest(result2));
            }
            return(BadRequest(result));
        }
        public async Task <HttpResponseMessage> SendInvitation(InvitationDto invitation)
        {
            bool conflict = await _service.SaveInvitedUsers(invitation);

            if (conflict)
            {
                return(new HttpResponseMessage(HttpStatusCode.Conflict));
            }
            return(new HttpResponseMessage(HttpStatusCode.OK));
        }
Beispiel #9
0
        public async Task <IActionResult> OnPostAsync()
        {
            Invitation = await _mediator.Send(new GetInvitationByKey(UrlKey));

            return(RedirectToPage("/Library", "AcceptInvitation", new
            {
                id = Invitation.LibraryId,
                urlKey = UrlKey
            }));
        }
        /// <summary>
        /// Добавить приглашение для сотрудника
        /// </summary>
        /// <param name="employeeId">Идентификатор сотрудника</param>
        /// <param name="invitationDto">DTO приглашения</param>
        /// <returns>Идентификатор нового приглашения</returns>
        public async Task <Guid> AddForEmployeeAsync(Guid employeeId, InvitationDto invitationDto)
        {
            var employee = await _employeeRepository.GetAsync(employeeId);

            var invitation = _invitationRepository.Add(employee: employee, addedInvitation: invitationDto);

            await _domainContext.SaveChangesAsync();

            return(invitation.Id);
        }
        public HappeningDto AddUser(Guid happeningId, Guid userId, bool commitImmediately = true)
        {
            // Happening.Name later isn't 100% needed but this serves to make sure the specified Happening actually exists
            Happening happening = GetEnt(happeningId);

            // make sure the user hasn't already been added
            if (joinService.GetEnt(userId, happeningId) != null)
            {
                throw new HandledException(new ArgumentException("Cannot add a user already added to event"));
            }

            var userToAdd = userService.GetEntOrDefault(userId);

            if (userToAdd == null)
            {
                throw new HandledException(new ArgumentException("Cannot add a user that doesn't exist"));
            }

            // happening has to either be non-private, the logged in user doing the adding has to be the owner, or the logged in user has to be an admin
            User currentUser = loginService.GetCurrentUser();

            if (happening.IsPrivate && happening.ControllingUserId != currentUser.Id && currentUser.Role != UserRole.Admin)
            {
                throw new HandledException(new ArgumentException("Can only add a user to a happening if it is non-private, the current user is the owner, or is an admin"));
            }

            InvitationDto result = new InvitationDto()
            {
                HappeningId         = happeningId,
                UserId              = userId,
                UserName            = userToAdd.FriendlyName,
                ReminderXMinsBefore = 0,
                HappeningName       = happening.Name,
                Date      = happening.StartTime,
                Status    = RSVP.NoResponse.ToString(),
                IsPrivate = happening.IsPrivate
            };

            HappeningUser joinEntity = joinService.CreateEntity(result);

            happening.AllUsers.Add(joinEntity);

            if (commitImmediately)
            {
                SaveChanges();
                return(Get(happeningId));
            }
            else
            {
                HappeningDto projectedResult = DtoFromEntity(happening);
                projectedResult.AllUsers = projectedResult.AllUsers.Append(userId);
                return(projectedResult);
            }
        }
Beispiel #12
0
        public IActionResult Invitation([FromBody] InvitationDto invitationDto)
        {
            try
            {
                if (invitationDto == null)
                {
                    return(NotFound());
                }

                // Retrieving the mail body along with the invitation link.
                var mailBody = _surveyManager.GenerateInvitationMailBody(invitationDto);

                List <string> emailList = invitationDto.Email.Split(';').ToList <string>();
                emailList.Reverse();
                // Sending Invitation to the specific resource mail
                foreach (var email in emailList)
                {
                    // Initiating the mail address
                    _emailManager.To.Add(email);
                }

                // Sending Invitation to the specific resource mail
                _emailManager.Subject = "Talent_Survey_Form";
                _emailManager.Body    = mailBody.ToString();
                var info = _emailManager.Send();
                if (info != "success")
                {
                    var result = new
                    {
                        error      = "error",
                        error_type = "",
                        message    = info
                    };
                    return(BadRequest(result));
                }

                // Storing data regarding Survey invitation
                //Database tables aren't ready yet.

                return(Ok());
            }
            catch (Exception x)
            {
                var result = new
                {
                    error      = x.StackTrace,
                    error_type = x.InnerException,
                    message    = x.Message
                };
                return(BadRequest(result));
            }
        }
Beispiel #13
0
        public static InvitationDto ConvertInvitationToInvitationDto(Invitation invitation)
        {
            InvitationDto invitationDto = new InvitationDto()
            {
                UserId      = invitation.UserId,
                GroupId     = invitation.GroupId,
                IsAdmin     = invitation.IsAdmin,
                Status      = invitation.Status,
                InvitedById = invitation.InvitedById
            };

            return(invitationDto);
        }
Beispiel #14
0
        public IHttpActionResult SendInvitation([FromUri] string username, [FromBody] InvitationDto invitation)
        {
            if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(invitation.GroupName))
            {
                return(BadRequest());
            }

            var user  = this._usersService.GetUserByUsername(username);
            var group = this._groupsService.GetGroupByName(invitation.GroupName);

            if (user == null)
            {
                return(Content(HttpStatusCode.NotFound, "There is no such user in the database"));
            }

            if (group == null)
            {
                return(Content(HttpStatusCode.NotFound, "There is no such group in the database"));
            }

            if (this._currentUserUsername != group.Creator.UserName)
            {
                return(Content(HttpStatusCode.Forbidden, "You cannot send invitations for this group."));
            }

            if (this._currentUserUsername == username)
            {
                return(Content(HttpStatusCode.Forbidden, "You cannot send invitation to yourself."));
            }

            var hasRequest = this._invitationService.IsUserInvited(invitation.GroupName, user.Id);

            if (hasRequest)
            {
                return(Content(HttpStatusCode.Conflict, "You have already sent request to this user."));
            }

            var invitationToSend = new Invitation
            {
                Date     = invitation.Date,
                Receiver = user,
                Group    = group
            };

            this._invitationService.CreateInvittation(invitationToSend);
            var result = new InvitationDto(invitationToSend.InvitationId, invitationToSend.Group.Name, group.Creator.UserName,
                                           invitationToSend.Date);

            return(Content(HttpStatusCode.Created, result));
        }
        public void Accept(InvitationDto invitation)
        {
            if (invitation == null)
            {
                throw new ArgumentNullException(nameof(invitation));
            }

            var star = _starContext.Star.Where(c => c.Password == invitation.Token).FirstOrDefault();

            star.Accept = true;


            _starContext.Update <Star>(star);
        }
Beispiel #16
0
        public ActionResult GetInvitationList(int studentId)
        {
            var student        = _mtiGraduationPartyEntities.Students.FirstOrDefault(s => s.Id == studentId);
            var invitationList = _mtiGraduationPartyEntities.Invitations.Where(i => i.StudentId == studentId).ToList();

            var invitationDto = new InvitationDto
            {
                Invitations      = invitationList,
                InvitationsExist = (invitationList.Count != 0),
                Student          = student
            };

            return(PartialView("Partial Views/_InvitationList", invitationDto));
        }
Beispiel #17
0
        public async Task <IActionResult> CreateInvitation(InvitationDto <AssessmentTestInvitationDetailsDto> requestDto)
        {
            // If the Partner provides reference checks, swap the template parameter to ReferenceCheckInvitationDetailsDto
            await _service.SendUpdateToEvaluationApi(requestDto.EvaluationDetails.InvitationId.ToString(), new StatusUpdateDto
            {
                InvitationId = requestDto.EvaluationDetails.InvitationId,
                Description  = "Some description",
                Message      = "Completed",
                ReportUrls   = new List <ResultUriDto>(),
                Score        = "N/A",
                Status       = InvitationStatus.Completed
            });

            return(Ok());
        }
Beispiel #18
0
        public async Task <bool> SaveInvitedUsers(InvitationDto invitation)
        {
            var user = await _aservice.FindUserByEmail(invitation.EmployerEmail);

            var company = await _aservice.FindCompanyById(user.CompanyId);

            var newUsers = ParseUsers(invitation.EmployeesEmails);

            foreach (string newUserEmail in newUsers)
            {
                if (await _aservice.FindUserByEmail(newUserEmail) != null)
                {
                    return(true);
                }
            }
            using (var context = _db.CreateContext())
            {
                var role = await context.UserRole.FirstAsync(t => t.Name == invitation.RoleName);

                foreach (var email in newUsers)
                {
                    context.UserInformation.Add(new UserInformation
                    {
                        RoleId      = role.RoleId,
                        CompanyId   = user.CompanyId,
                        ManagerId   = user.UserId,
                        Email       = email,
                        Password    = "******",
                        Salt        = " ",
                        IsConfirmed = false
                    });
                }
                await context.SaveChangesAsync();
            }
            foreach (string newUserEmail in newUsers)
            {
                var newUser = await _aservice.FindUserByEmail(newUserEmail);

                var token = _rservice.GenerateToken();
                await _rservice.SaveToken(newUser.UserId, token);

                await EmailService.NotifyAboutRegistration(user, company, newUserEmail, "http://localhost:4446/logic/SelfRegistration?token=" + token);
            }
            return(false);
        }
Beispiel #19
0
        public string GenerateInvitationMailBody(InvitationDto invitationDto)
        {
            // Embedding the invited resource Name & Mail to the invation link.
            string invitationLink = AppSettingsDto.BaseDomainName + "/index.html?fName="
                                    + invitationDto.FirstName + "&lName="
                                    + invitationDto.SurName + "&email="
                                    + invitationDto.Email;

            // Concatenating some additional text to the mail body.
            string mailBody = "<br />Dear "
                              + invitationDto.FirstName + " "
                              + invitationDto.SurName + ",<br /><br />"
                              + "Please click the invitation link given below to have a survey form : <br />"
                              + "<a href='http://" + invitationLink + "'>Talent Survey Form</a>"
                              + "<br /><br /><b> N.B:  Please do not reply in this mail </b><br /><br /> Thanks, <br /> Talent Team";

            return(mailBody);
        }
Beispiel #20
0
        public async Task <IActionResult> SendInvitation([FromBody] InvitationDto invitationDto)
        {
            var loggedUserId = _currentUserService.GetCurrentUserId();

            if (await _roleCheck.IsAdmin(loggedUserId, invitationDto.ProjectId))
            {
                if (await _authService.UserExists(invitationDto.UserEmail))
                {
                    var user = await _authRepository.GetUserByEmailAsync(invitationDto.UserEmail);

                    try
                    {
                        await _projectService.AddUserProject(invitationDto.ProjectId, user.Id);
                    }
                    catch (Exception e)
                    {
                        return(BadRequest(e.Message));
                    }
                    await _unitOfWork.Complete();

                    await _authService.SendTextToEmail(invitationDto.UserEmail, "Invitation",
                                                       "Zostałeś dodany do nowego projektu, który znajdziesz w oknie do ich wyboru");

                    return(Ok());
                }
                else
                {
                    try
                    {
                        var url = $"{_appSettings.FrontendUrl}/ProjectJoin";
                        await _authService.SendInvitationLinkToProject(invitationDto.UserEmail, invitationDto.ProjectId,
                                                                       url);

                        return(Ok());
                    }
                    catch (Exception)
                    {
                        return(BadRequest("Nie udalo sie wyslac zaproszenia"));
                    }
                }
            }
            return(BadRequest("Brak uprawnien do tej operacji"));
        }
Beispiel #21
0
        public async Task <IActionResult> Post([FromBody] InvitationDto invitationDto)
        {
            var validator = new InvitationValidator();
            var result    = validator.Validate(invitationDto);

            if (result.Errors.Count > 0)
            {
                return(new BadRequestObjectResult(new {
                    ErrorCode = result.Errors.First().ErrorCode,
                    Message = result.Errors.First().ErrorMessage
                }));
            }

            try
            {
                var invitationsCountSent = _invitationService.GetInvitationsCountPerApiId(4);

                if (invitationsCountSent + invitationDto.PhoneNumbers.Length > 128)
                {
                    return(new BadRequestObjectResult(new
                    {
                        ErrorCode = "403",
                        ErrorMessage = "BAD_REQUEST PHONE_NUMBERS_INVALID: Too much phone numbers, should be less or equal to 128 per day"
                    }));
                }

                var duplicatesPhoneNumbers = await _invitationService.CheckDuplicatePhones(invitationDto.PhoneNumbers);

                if (duplicatesPhoneNumbers.Count() > 0)
                {
                    invitationDto.PhoneNumbers = invitationDto.PhoneNumbers.Except(duplicatesPhoneNumbers).ToArray();
                }

                await _invitationService.SendInvites(invitationDto.PhoneNumbers, 7);
            }
            catch (Exception ex)
            {
                return(StatusCode(500, "INTERNAL " + ex.Source + ": " + ex.Message));
            }

            return(Ok());
        }
Beispiel #22
0
            public AsUserBuilder CreateInvitation(ExpirationTimeCommandItem expirationTime,
                                                  UsageCounterCommandItem usageCounter)
            {
                var invitation = new InvitationDto(Guid.NewGuid());

                _builder.AddInvitation(invitation);
                _builder.AddBuildAction(
                    async() =>
                {
                    await _facade.SendAsync(
                        new GenerateInvitationCommand(_userIdContext, _group.GroupId, invitation.InvitationId,
                                                      expirationTime, usageCounter)
                        );
                    var invitationDto = await _facade.QueryAsync(new GetInvitationQuery(_userIdContext,
                                                                                        _group.GroupId, invitation.InvitationId));
                    invitation.Code = invitationDto.Code;
                });

                return(this);
            }
Beispiel #23
0
        public IActionResult View(Guid id)
        {
            ViewData["Title"] = "View Happening";

            var currentUser = loginService.GetCurrentUser();

            HappeningDto  happening = ApiGet(id);
            InvitationDto data      = happeningService.GetHappeningMembership(id).SingleOrDefault(x => x.UserId == currentUser.Id);


            if (currentUser.Role == UserRole.Admin || (data != null && data.HappeningControllingUserId == currentUser.Id))
            {
                ViewData["IsAdmin"] = true;
            }
            else
            {
                ViewData["IsAdmin"] = false;
            }



            // get what little Happening data we need to the View
            ViewData["HappeningName"]            = happening.Name;
            ViewData["HappeningDesc"]            = happening.Description;
            ViewData["HappeningFlavor"]          = happening.Flavor;
            ViewData["HappeningControllingUser"] = happening.ControllingUser;
            ViewData["HappeningStart"]           = happening.StartTime;
            ViewData["HappeningEnd"]             = happening.EndTime;

            ViewData["HappeningId"] = happening.Id;
            ViewData["UserId"]      = loginService.GetCurrentUserId();

            // While View is related in design to edit it won't share the same view since the submit target is different and many fields are readonly

            if (StringValues.IsNullOrEmpty(Request.Headers["Referer"]))
            {
                ViewData["Referer"] = Request.Headers["Referer"].ToString();
            }

            return(View(data));
        }
        private static void AssertInvitation(InvitationDto invitationDto, Invitation invitation)
        {
            var functionalRoleParticipant = invitation.Participants.First();
            var personParticipant         = invitation.Participants.ToList()[1];
            var commPkgs = invitation.CommPkgs.Count;
            var mcPkgs   = invitation.McPkgs.Count;

            Assert.AreEqual(invitation.Title, invitationDto.Title);
            Assert.AreEqual(invitation.Description, invitationDto.Description);
            Assert.AreEqual(invitation.ProjectName, invitationDto.ProjectName);
            Assert.AreEqual(invitation.Type, invitationDto.Type);
            Assert.AreEqual(functionalRoleParticipant.FunctionalRoleCode, invitationDto.Participants.First().FunctionalRole.Code);
            Assert.IsFalse(invitationDto.Participants.First().CanEditAttendedStatusAndNote);
            Assert.IsFalse(invitationDto.Participants.First().IsSigner);
            Assert.IsFalse(invitationDto.Participants.First().IsAttendedTouched);
            Assert.AreEqual(personParticipant.AzureOid, invitationDto.Participants.ToList()[1].Person.AzureOid);
            Assert.IsTrue(invitationDto.Participants.ToList()[1].CanEditAttendedStatusAndNote);
            Assert.IsTrue(invitationDto.Participants.ToList()[1].IsSigner);
            Assert.AreEqual(commPkgs, invitationDto.CommPkgScope.Count());
            Assert.AreEqual(mcPkgs, invitationDto.McPkgScope.Count());
        }
Beispiel #25
0
        public IActionResult GetById([FromBody] InvitationDto invitationDto)
        {
            var invitation = _context.Invitaitons
                             .Include(i => i.inviter)
                             .FirstOrDefault(t => t.Id == invitationDto.Id);

            if (invitation == null)
            {
                return(Ok(new {
                    success = false,
                    error = "Invintation not found"
                }));
            }

            invitationDto = _mapper.Map <InvitationDto>(invitation);

            return(Ok(new {
                success = true,
                invite = invitationDto
            }));
        }
Beispiel #26
0
        // Encrypt
        public string CreateInvitationCode(string userid, int lifeInHours = 48)
        {
            try
            {
                var           life    = DateTime.UtcNow.AddHours(lifeInHours);
                InvitationDto results = new InvitationDto()
                {
                    userId = userid,
                    expire = M.DateTimeToUnixTime(life)
                };

                var    str     = InvitationToString(results);
                string key     = appSettings.jwt.SecretKey;
                string encoded = Encode_Decode.Encrypt(str, key);
                return(encoded);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Beispiel #27
0
        public List <InvitationDto> Getinv()
        {
            IEnumerable <Invitation> invitations = _IS.GetAllInvites();
            List <InvitationDto>     vaDtos      = new List <InvitationDto>();


            foreach (Invitation a in invitations)
            {
                InvitationDto vd = new InvitationDto();
                vd.InvitationId = a.InvitationId;
                vd.Status       = a.Status;
                vd.VolunteerId  = a.VolunteerId;
                vd.ActionId     = a.ActionId;
                VoluntaryActionDto vDA = new VoluntaryActionDto();
                VolunteerDto       vDt = new VolunteerDto();

                var V = _IS.GetDataOfInvite(a.VolunteerId);
                var A = _IS.GetActionV(a.ActionId);
                foreach (VoluntaryAction Ac in A)
                {
                    vDA.ActionId  = Ac.ActionId;
                    vDA.Name      = Ac.Name;
                    vDA.StartDate = Ac.StartDate;
                    vDA.EndDate   = Ac.EndDate;
                    vd.Actions.Add(vDA);
                }

                foreach (Volunteer v in V)
                {
                    vDt.VolunteerId = v.Id;
                    vDt.UserName    = v.UserName;
                    vDt.UserEmail   = v.Email;
                    vd.Volunteers.Add(vDt);
                }
                vaDtos.Add(vd);
            }


            return(vaDtos);
        }
Beispiel #28
0
        public async Task <InvitationDto> CreateInvitationAsync([FromBody] InvitationDto request)
        {
            string origin;

            try
            {
                Microsoft.Extensions.Primitives.StringValues origins;
                Request.Headers.TryGetValue("Origin", out origins);
                origin = origins[0];
            }
            catch
            {
                Response.StatusCode = (int)HttpStatusCode.ServiceUnavailable;
                throw new ArgumentException("Origin");
            }

            Invitation entity;

            using (var uow = UowManager.CurrentOrCreateNew(true))
            {
                entity = await InvitationDomainService.CreateAsync(request.MapToEntity());

                await uow.CompleteAsync();
            }
            using (var uow = UowManager.CurrentOrCreateNew(true))
            {
                entity = await InvitationDomainService.RetrieveAsync(entity.Id);
            }

            SendGrid.Response sendDealerInvitationEmailResponse = await TestDriveEmailService
                                                                  .SendDealerInvitationEmail(
                new EmailAddress(entity.Email, string.Empty),
                new DealerInvitationEmailTemplate($"{origin}/#/registration/{entity.InvitationCode}"));

            InvitationDto dto = new InvitationDto();

            dto.MapFromEntity(entity);
            return(dto);
        }
Beispiel #29
0
        // InviteToTeam <teamName> <username>
        public string Execute(params string[] args)
        {
            string teamName = args[0];
            string username = args[1];

            var loggedUser = this.userService.GetCurrentUser();

            var invitedUser = this.userService.FindUserByUsername(username);
            var team        = this.teamService.FindTeamByTeamName(teamName);

            if (!this.userService.IsAuthenticated())
            {
                throw new InvalidOperationException("You should login first!");
            }

            if (invitedUser == null || team == null)
            {
                throw new ArgumentException("Team or user does not exist!");
            }

            if (!this.teamService.IsUserCreatorOfTeam(teamName, loggedUser) ||
                this.teamService.IsMemberOfTeam(team.Name, loggedUser.Username) ||
                this.teamService.IsMemberOfTeam(team.Name, invitedUser.Username)
                )
            {
                throw new InvalidOperationException("Not allowed!");
            }

            if (this.invitationService.IsInviteExist(team.Name, invitedUser))
            {
                throw new InvalidOperationException("Invite is already sent!");
            }

            var invitation = new InvitationDto(invitedUser.Id, team.Id);

            this.invitationService.SendInvitation(invitation);

            return($"Team {teamName} invited {username}!");
        }
        public async Task <PagedList <InvitationDto> > GetRecieveInvitations(PageParams pageParams, int userId)
        {
            var sendInvitations = await _context.Invitations.Where(x => x.UserRecipientId == userId).ToListAsync();

            List <InvitationDto> lstInvitation = new List <InvitationDto>();

            foreach (Invitations inv in sendInvitations)
            {
                Groups grp = await _context.Groups.FirstOrDefaultAsync(x => x.Id == inv.GroupId);

                InvitationDto invD = new InvitationDto()
                {
                    GroupName    = grp.GroupName,
                    GroupId      = grp.Id,
                    InvitationId = inv.Id
                };

                lstInvitation.Add(invD);
            }

            return(await PagedList <InvitationDto> .Create(lstInvitation, pageParams.PageNumber, pageParams.PageSize));
        }