public AnnouncementApplication AddToAnnouncement(int announcementId, AnnouncementTypeEnum type, Guid applicationId)
        {
            var app = ServiceLocator.ServiceLocatorMaster.ApplicationService.GetApplicationById(applicationId);

            EnsureApplicationPermission(app.Id);

            using (var uow = Update())
            {
                var ann = ServiceLocator.GetAnnouncementService(type).GetAnnouncementDetails(announcementId);
                if (!ApplicationSecurity.CanAddToAnnouncement(app, ann, Context))
                {
                    throw new ChalkableSecurityException();
                }
                var aa = new AnnouncementApplication
                {
                    AnnouncementRef = announcementId,
                    ApplicationRef  = applicationId,
                    Active          = false,
                    Order           = ServiceLocator.GetAnnouncementService(type).GetNewAnnouncementItemOrder(ann)
                };
                var da = new AnnouncementApplicationDataAccess(uow);
                da.Insert(aa);
                uow.Commit();
                aa = da.GetAll(new AndQueryCondition
                {
                    { nameof(AnnouncementApplication.AnnouncementRef), announcementId },
                    { nameof(AnnouncementApplication.ApplicationRef), applicationId },
                    { nameof(AnnouncementApplication.Active), false }
                }).OrderByDescending(x => x.Id).First();
                return(aa);
            }
        }
Exemplo n.º 2
0
        public Announcement Add(int announcementId, AnnouncementTypeEnum type, int attachmentId)
        {
            var annDetails = ServiceLocator.GetAnnouncementService(type).GetAnnouncementDetails(announcementId);

            Trace.Assert(Context.PersonId.HasValue);
            Trace.Assert(Context.SchoolLocalId.HasValue);
            if (!CanAttach(annDetails))
            {
                throw new ChalkableSecurityException();
            }

            using (var u = Update())
            {
                var attDa = new AttachmentDataAccess(u);
                var att   = attDa.GetById(attachmentId);
                if (att.PersonRef != Context.PersonId)
                {
                    throw new ChalkableSecurityException();
                }

                var annAtt = new AnnouncementAttachment
                {
                    AnnouncementRef = annDetails.Id,
                    AttachedDate    = Context.NowSchoolTime,
                    Order           = ServiceLocator.GetAnnouncementService(type).GetNewAnnouncementItemOrder(annDetails),
                    AttachmentRef   = attachmentId
                };
                new AnnouncementAttachmentDataAccess(u).Insert(annAtt);
                att.LastAttachedDate = annAtt.AttachedDate;
                attDa.Update(att);
                u.Commit();
                NotifyUsers(annDetails, type);
            }
            return(annDetails);
        }
Exemplo n.º 3
0
        //TODO : notification sending

        public AnnouncementQnA AskQuestion(int announcementId, AnnouncementTypeEnum announcementType, string question)
        {
            Trace.Assert(Context.PersonId.HasValue && Context.SchoolLocalId.HasValue);

            using (var uow = Update())
            {
                var da  = new AnnouncementQnADataAccess(uow);
                var ann = ServiceLocator.GetAnnouncementService(announcementType).GetAnnouncementById(announcementId);

                var annQnA = new AnnouncementQnAComplex
                {
                    AnnouncementRef = announcementId,
                    AskerRef        = Context.PersonId.Value,
                    Question        = question,
                    QuestionTime    = Context.NowSchoolTime,
                    State           = AnnouncementQnAState.Asked
                };
                da.Insert(annQnA);
                uow.Commit();
                annQnA = da.GetAnnouncementQnA(new AnnouncementQnAQuery
                {
                    AnnouncementId = announcementId,
                    CallerId       = annQnA.AskerRef,
                    SchoolId       = Context.SchoolLocalId.Value
                }).AnnouncementQnAs.OrderByDescending(x => x.Id).First();
                ServiceLocator.NotificationService.AddAnnouncementNotificationQnToAuthor(annQnA.Id, ann.Id, announcementType);
                return(annQnA);
            }
        }
        public AnnouncementQnA Answer(int announcementQnAId, AnnouncementTypeEnum announcementType, string question, string answer)
        {
            if (!Context.PersonId.HasValue)
            {
                throw new UnassignedUserException();
            }

            var annQnA = GetAnnouncementQnA(announcementQnAId);

            if (!CanEditQuestion(annQnA))
            {
                throw new ChalkableSecurityException();
            }

            annQnA.State    = AnnouncementQnAState.Answered;
            annQnA.Question = question;
            if (Context.Role == CoreRoles.TEACHER_ROLE && (!annQnA.AnswererRef.HasValue || annQnA.AnswererRef == Context.PersonId))
            {
                var answerer = ServiceLocator.PersonService.GetPersonDetails(Context.PersonId.Value);
                annQnA.Answerer     = answerer;
                annQnA.AnswererRef  = answerer.Id;
                annQnA.AnsweredTime = Context.NowSchoolTime;
                annQnA.Answer       = answer;
            }
            AnnouncementQnAStorage.Update(annQnA);
            ServiceLocator.NotificationService.AddAnnouncementNotificationAnswerToStudent(annQnA.Id, annQnA.AnnouncementRef, announcementType);
            return(annQnA);
        }
        public void UpdateAnnouncementApplicationMeta(int announcementApplicationId, AnnouncementTypeEnum announcementType, string text, string imageUrl, string description)
        {
            Trace.Assert(Context.SchoolLocalId.HasValue);
            Trace.Assert(Context.PersonId.HasValue);
            using (var uow = Update())
            {
                var da  = new AnnouncementApplicationDataAccess(uow);
                var aa  = da.GetById(announcementApplicationId);
                var ann = ServiceLocator.GetAnnouncementService(announcementType).GetAnnouncementById(aa.AnnouncementRef);
                if (!ann.IsOwner && Context.Role != CoreRoles.DISTRICT_ADMIN_ROLE)
                {
                    throw new ChalkableSecurityException(ChlkResources.ERR_SECURITY_EXCEPTION);
                }
                aa.Text = text;

                if (string.IsNullOrWhiteSpace(imageUrl) || !Uri.IsWellFormedUriString(imageUrl, UriKind.Absolute))
                {
                    imageUrl = null;
                }

                aa.ImageUrl    = imageUrl;
                aa.Description = description;
                da.Update(aa);
                uow.Commit();
            }
        }
Exemplo n.º 6
0
 protected ActionResult EditTitle(int announcementId, AnnouncementTypeEnum announcementType, string title, Func <string, bool> existsAction)
 {
     if (!existsAction(title))
     {
         SchoolLocator.GetAnnouncementService(announcementType).EditTitle(announcementId, title);
         return(Json(true));
     }
     return(Json(false));
 }
        public void AttachAppToAnnouncement(int announcementAppId, AnnouncementTypeEnum announcementType)
        {
            var aa  = GetAnnouncementApplication(announcementAppId);
            var ann = ServiceLocator.GetAnnouncementService(announcementType).GetAnnouncementById(aa.AnnouncementRef);

            if (ann.IsOwner)
            {
                throw new ChalkableSecurityException(ChlkResources.ERR_SECURITY_EXCEPTION);
            }
            aa.Active = true;
            AnnouncementApplicationStorage.Update(aa);
        }
Exemplo n.º 8
0
        public void AddAnnouncementNewAttachmentNotification(int announcementId, AnnouncementTypeEnum announcementType)
        {
            var ann           = ServiceLocator.GetAnnouncementService(announcementType).GetAnnouncementDetails(announcementId);
            var persons       = ServiceLocator.GetAnnouncementService(announcementType).GetAnnouncementRecipientPersons(announcementId, StudentFilterEnum.All);
            var notifications = new List <Notification>();

            foreach (var person in persons)
            {
                notifications.Add(builder.BuildAnnouncementNewAttachmentNotification(Context.NowSchoolTime, ann, person));
            }
            AddNotifications(notifications);
        }
Exemplo n.º 9
0
        public AnnouncementAssignedAttribute AddAttachment(AnnouncementTypeEnum announcementType, int announcementId, int assignedAttributeId, int attachmentId)
        {
            Trace.Assert(Context.PersonId.HasValue);
            var ann = ServiceLocator.GetAnnouncementService(announcementType).GetAnnouncementById(announcementId);

            if (!CanAttach(ann))
            {
                throw new ChalkableSecurityException();
            }

            using (var uow = Update())
            {
                var da        = new AnnouncementAssignedAttributeDataAccess(uow);
                var attribute = da.GetById(assignedAttributeId);
                if (attribute.AttachmentRef > 0)
                {
                    throw new ChalkableSisException("You can't attach more than one file to an attribute");
                }

                var attDa      = new AttachmentDataAccess(uow);
                var attachment = attDa.GetById(attachmentId);
                if (attachment.PersonRef != Context.PersonId)
                {
                    throw new ChalkableSecurityException();
                }

                attribute.AttachmentRef = attachment.Id;
                attribute.Attachment    = attachment;
                da.Update(attribute);

                if (announcementType == AnnouncementTypeEnum.Class)
                {
                    if (!attachment.SisAttachmentId.HasValue)
                    {
                        var attContent = ServiceLocator.AttachementService.GetAttachmentContent(attachment);
                        var stiAtt     = ConnectorLocator.AttachmentConnector.UploadAttachment(attachment.Name, attContent.Content).Last();
                        MapperFactory.GetMapper <Attachment, StiAttachment>().Map(attachment, stiAtt);
                        attDa.Update(attachment);
                    }

                    if (attribute.SisActivityAssignedAttributeId.HasValue)
                    {
                        var stiAttribute = ConnectorLocator.ActivityAssignedAttributeConnector.GetAttribute(attribute.SisActivityId.Value, attribute.SisActivityAssignedAttributeId.Value);
                        MapperFactory.GetMapper <ActivityAssignedAttribute, AnnouncementAssignedAttribute>().Map(stiAttribute, attribute);
                        ConnectorLocator.ActivityAssignedAttributeConnector.Update(stiAttribute.ActivityId, stiAttribute.Id, stiAttribute);
                    }
                }
                uow.Commit();
                return(attribute);
            }
        }
Exemplo n.º 10
0
 private void NotifyUsers(Announcement announcement, AnnouncementTypeEnum type)
 {
     if (!announcement.IsDraft)
     {
         if (announcement.IsOwner)
         {
             ServiceLocator.NotificationService.AddAnnouncementNewAttachmentNotification(announcement.Id, type);
         }
         else
         {
             ServiceLocator.NotificationService.AddAnnouncementNewAttachmentNotificationToOwner(announcement.Id, type, Context.PersonId.Value);
         }
     }
 }
        public void UpdateAnnouncementApplicationMeta(int announcementApplicationId, AnnouncementTypeEnum announcementType, string text,
                                                      string imageUrl, string description)
        {
            var aa  = GetAnnouncementApplication(announcementApplicationId);
            var ann = ServiceLocator.GetAnnouncementService(announcementType).GetAnnouncementById(aa.AnnouncementRef);

            if (ann.IsOwner)
            {
                throw new ChalkableSecurityException(ChlkResources.ERR_SECURITY_EXCEPTION);
            }
            aa.Text        = text;
            aa.ImageUrl    = imageUrl;
            aa.Description = description;
            AnnouncementApplicationStorage.Update(aa);
        }
Exemplo n.º 12
0
        private string GetAnnouncementType(AnnouncementTypeEnum at)
        {
            switch (at)
            {
            case AnnouncementTypeEnum.LessonPlan:
                return("lesson plan");

            case AnnouncementTypeEnum.Class:
                return("activity");

            case AnnouncementTypeEnum.Admin:
                return("admin announcement");

            default:
                return("announcement");
            }
        }
Exemplo n.º 13
0
        public AnnouncementAssignedAttribute Add(AnnouncementTypeEnum announcementType, int announcementId, int attributeTypeId)
        {
            var ann = ServiceLocator.GetAnnouncementService(announcementType).GetAnnouncementById(announcementId);

            Trace.Assert(Context.PersonId.HasValue);
            Trace.Assert(Context.SchoolLocalId.HasValue);

            var attributeType = ServiceLocator.AnnouncementAttributeService.GetAttributeById(attributeTypeId, true);


            using (var uow = Update())
            {
                if (!CanAttach(ann))
                {
                    throw new ChalkableSecurityException();
                }

                var annAttribute = new AnnouncementAssignedAttribute
                {
                    AnnouncementRef    = ann.Id,
                    AttributeTypeId    = attributeType.Id,
                    Text               = "",
                    VisibleForStudents = false,
                    Name               = attributeType.Name
                };

                if (announcementType == AnnouncementTypeEnum.Class)
                {
                    var announcement = ServiceLocator.ClassAnnouncementService.GetClassAnnouncemenById(announcementId);
                    if (announcement.SisActivityId.HasValue)
                    {
                        var activityAssignedAttr = new ActivityAssignedAttribute();
                        MapperFactory.GetMapper <ActivityAssignedAttribute, AnnouncementAssignedAttribute>().Map(activityAssignedAttr, annAttribute);
                        activityAssignedAttr.Text = " ";
                        activityAssignedAttr      = ConnectorLocator.ActivityAssignedAttributeConnector.CreateActivityAttribute(announcement.SisActivityId.Value, activityAssignedAttr);
                        MapperFactory.GetMapper <AnnouncementAssignedAttribute, ActivityAssignedAttribute>().Map(annAttribute, activityAssignedAttr);
                        annAttribute.Name = attributeType.Name;//activity attr returns null name
                    }
                }

                var da = new AnnouncementAssignedAttributeDataAccess(uow);
                var id = da.InsertWithEntityId(annAttribute);
                uow.Commit();
                return(da.GetById(id));
            }
        }
 public Announcement RemoveFromAnnouncement(int announcementAppId, AnnouncementTypeEnum announcementType)
 {
     try
     {
         var aa = AnnouncementApplicationStorage.GetById(announcementAppId);
         AnnouncementApplicationStorage.Delete(announcementAppId);
         var res = ServiceLocator.GetAnnouncementService(announcementType).GetAnnouncementById(aa.AnnouncementRef);
         if (res.IsOwner)
         {
             throw new ChalkableSecurityException(ChlkResources.ERR_SECURITY_EXCEPTION);
         }
         return(res);
     }
     catch (Exception)
     {
         throw new ChalkableException(String.Format(ChlkResources.ERR_CANT_DELETE_ANNOUNCEMENT_APPLICATION, announcementAppId));
     }
 }
        public void UpdateAnnouncementRecipientData(int?announcementId, AnnouncementTypeEnum announcementType, int?schoolYearId, int?personId, int?roleId,
                                                    bool complete, int?classId, DateTime?fromDate, DateTime?toDate, bool filterByExpiryDate)
        {
            var param = new Dictionary <string, object>
            {
                [nameof(announcementId)]     = announcementId,
                [nameof(complete)]           = complete,
                [nameof(personId)]           = personId,
                [nameof(roleId)]             = roleId,
                [nameof(schoolYearId)]       = schoolYearId,
                [nameof(classId)]            = classId,
                [nameof(announcementType)]   = (int)announcementType,
                [nameof(fromDate)]           = fromDate,
                [nameof(toDate)]             = toDate,
                [nameof(filterByExpiryDate)] = filterByExpiryDate
            };

            ExecuteStoredProcedure("spUpdateAnnouncementRecipientData", param);
        }
Exemplo n.º 16
0
        public void AttachAppToAnnouncement(int announcementAppId, AnnouncementTypeEnum announcementType)
        {
            Trace.Assert(Context.SchoolLocalId.HasValue);
            Trace.Assert(Context.PersonId.HasValue);
            using (var uow = Update())
            {
                var da = new AnnouncementApplicationDataAccess(uow);
                var aa = da.GetById(announcementAppId);

                var ann = ServiceLocator.GetAnnouncementService(announcementType).GetAnnouncementById(aa.AnnouncementRef);
                if (!ann.IsOwner && Context.Role != CoreRoles.DISTRICT_ADMIN_ROLE)
                {
                    throw new ChalkableSecurityException(ChlkResources.ERR_SECURITY_EXCEPTION);
                }
                aa.Active = true;
                da.Update(aa);
                uow.Commit();
            }
        }
        public AnnouncementQnA AskQuestion(int announcementId, AnnouncementTypeEnum announcementType, string question)
        {
            Trace.Assert(Context.PersonId.HasValue);

            var ann = ServiceLocator.GetAnnouncementService(announcementType).GetAnnouncementDetails(announcementId);

            //if(!ann.PrimaryTeacherRef.HasValue)
            //    throw new ChalkableException("There is no teachers for that item");

            var annQnA = new AnnouncementQnAComplex
            {
                AnnouncementRef = announcementId,
                AskerRef        = Context.PersonId.Value,
                Question        = question,
                QuestionTime    = Context.NowSchoolTime,
                State           = AnnouncementQnAState.Asked,
                Asker           = ServiceLocator.PersonService.GetPersonDetails(Context.PersonId.Value),
                Answerer        = ServiceLocator.PersonService.GetPersonDetails(ann.Owner.Id)
            };

            if (ann.ClassAnnouncementData != null)
            {
                annQnA.ClassRef = ann.ClassAnnouncementData.ClassRef;
            }
            if (ann.LessonPlanData != null)
            {
                annQnA.ClassRef = ann.LessonPlanData.ClassRef;
            }
            if (ann.AdminAnnouncementData != null)
            {
                annQnA.AdminRef = ann.AdminAnnouncementData.AdminRef;
            }

            AnnouncementQnAStorage.Add(annQnA);
            annQnA = GetAnnouncementQnA(new AnnouncementQnAQuery
            {
                AnnouncementId = announcementId,
                CallerId       = annQnA.AskerRef
            }).AnnouncementQnAs.OrderByDescending(x => x.Id).First();
            ServiceLocator.NotificationService.AddAnnouncementNotificationQnToAuthor(annQnA.Id, ann.Id, announcementType);
            return(annQnA);
        }
Exemplo n.º 18
0
        public AnnouncementViewModel(Announcement announcement)
        {
            Title = announcement.Title;
            Body  = announcement.Body;

            if (announcement.Level.FirstOrDefault() is MultipleChoiceOption announcementLevel)
            {
                Level = announcementLevel.ToEnum <AnnouncementLevelEnum>();
            }

            if (announcement.Location.FirstOrDefault() is MultipleChoiceOption announcementLocation)
            {
                Location = announcementLocation.ToEnum <AnnouncementLocationEnum>();
            }

            if (announcement.Type.FirstOrDefault() is MultipleChoiceOption announcementType)
            {
                Type = announcementType.ToEnum <AnnouncementTypeEnum>();
            }
        }
        public AnnouncementApplication AddToAnnouncement(int announcementId, AnnouncementTypeEnum announcementType, Guid applicationId)
        {
            var app = ServiceLocator.ServiceLocatorMaster.ApplicationService.GetApplicationById(applicationId);
            var ann = ServiceLocator.GetAnnouncementService(announcementType).GetAnnouncementDetails(announcementId);

            if (!ApplicationSecurity.CanAddToAnnouncement(app, ann, Context))
            {
                throw new ChalkableSecurityException();
            }
            var aa = new AnnouncementApplication
            {
                AnnouncementRef = announcementId,
                ApplicationRef  = applicationId,
                Active          = false,
                Order           = ServiceLocator.GetAnnouncementService(announcementType).GetNewAnnouncementItemOrder(ann)
            };

            AnnouncementApplicationStorage.Add(aa);
            aa = AnnouncementApplicationStorage.GetAll(announcementId, applicationId, false).OrderByDescending(x => x.Id).First();
            return(aa);
        }
Exemplo n.º 20
0
 /// <summary>
 /// Evaluates points for a card in a game
 /// </summary>
 /// <param name="gameType">curent game</param>
 /// <param name="card">card to be evaluated</param>
 /// <returns></returns>
 public static int EvaluateCard( AnnouncementTypeEnum gameType, Card card )
 {
     int val = 0;
     switch( gameType )
     {
         case AnnouncementTypeEnum.AllTrumps :
             val = EvaluateTrumps( card );
             break;
         case AnnouncementTypeEnum.NoTrumps :
             val =  EvaluateNoTrumps( card );
             break;
         case AnnouncementTypeEnum.Spades :
             if( card.CardColor == CardColor.Spades )
                 val =  EvaluateTrumps( card );
             else
                 val =  EvaluateNoTrumps( card );
             break;
         case AnnouncementTypeEnum.Hearts :
             if( card.CardColor == CardColor.Hearts )
                 val =  EvaluateTrumps( card );
             else
                 val =  EvaluateNoTrumps( card );
             break;
         case AnnouncementTypeEnum.Diamonds :
             if( card.CardColor == CardColor.Diamonds )
                 val =  EvaluateTrumps( card );
             else
                 val =  EvaluateNoTrumps( card );
             break;
         case AnnouncementTypeEnum.Clubs :
             if( card.CardColor == CardColor.Clubs )
                 val =  EvaluateTrumps( card );
             else
                 val =  EvaluateNoTrumps( card );
             break;
         case AnnouncementTypeEnum.Pass :
             break;
     }
     return val;
 }
Exemplo n.º 21
0
        /// <summary>
        /// If announcement made by this player is valid according to game rules
        /// </summary>
        public bool IsValid(Player player, AnnouncementTypeEnum type, bool isDoubled, bool isRedoubled)
        {
            //no player
            if (player == null)
            {
                throw new ArgumentNullException("Player", "Bidding player cannot be null");
            }

            //legal pass
            if (type == AnnouncementTypeEnum.Pass)
            {
                if (!isDoubled && !isRedoubled)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }

            if (_lastValidAnnouncement.CompareTo(type) < 0 && !isDoubled && !isRedoubled)
            {
                return(true);
            }

            if (_lastValidAnnouncement.CompareTo(type) == 0 && !IsLastValidBidByTeam(player) && !_lastValidAnnouncement.IsReDoubled)
            {
                if (!_lastValidAnnouncement.IsDoubled && isDoubled && !isRedoubled)
                {
                    return(true);
                }
                if (_lastValidAnnouncement.IsDoubled && !isDoubled && isRedoubled)
                {
                    return(true);
                }
            }

            return(false);
        }
        public Announcement AddAttachment(int announcementId, AnnouncementTypeEnum annType, byte[] content, string name)
        {
            var ann = ServiceLocator.GetAnnouncementService(annType).GetAnnouncementDetails(announcementId);

            if (!Context.PersonId.HasValue)
            {
                throw new UnassignedUserException();
            }
            if (!CanAttach(ann))
            {
                throw new ChalkableSecurityException();
            }

            var uuid   = UploadToCrocodoc(name, content);
            var annAtt = new AnnouncementAttachment
            {
                AnnouncementRef = ann.Id,
                AttachedDate    = Context.NowSchoolTime,
                Order           = ServiceLocator.GetAnnouncementService(annType).GetNewAnnouncementItemOrder(ann)
            };

            var attachment = AnnouncementAttachmentStorage.Add(annAtt);

            ServiceLocator.StorageBlobService.AddBlob(ATTACHMENT_CONTAINER_ADDRESS, attachment.Id.ToString(CultureInfo.InvariantCulture), content);

            if (ann.State != AnnouncementState.Draft)
            {
                if (ann.IsOwner)
                {
                    ServiceLocator.NotificationService.AddAnnouncementNewAttachmentNotification(announcementId, annType);
                }
                else
                {
                    ServiceLocator.NotificationService.AddAnnouncementNewAttachmentNotificationToOwner(announcementId, annType, Context.PersonId.Value);
                }
            }
            return(ann);
        }
Exemplo n.º 23
0
        public AnnouncementAssignedAttribute UploadAttachment(AnnouncementTypeEnum announcementType, int announcementId, int assignedAttributeId, byte[] bin, string name)
        {
            Trace.Assert(Context.PersonId.HasValue && Context.SchoolLocalId.HasValue);
            var ann = ServiceLocator.GetAnnouncementService(announcementType).GetAnnouncementById(announcementId);

            using (var uow = Update())
            {
                var da = new AnnouncementAssignedAttributeDataAccess(uow);
                var assignedAttribute = da.GetById(assignedAttributeId);
                if (!CanAttach(ann))
                {
                    throw new ChalkableSecurityException();
                }

                if (assignedAttribute.AttachmentRef > 0)
                {
                    throw new ChalkableSisException("You can't attach more than one file to an attribute");
                }

                var isStiAttribute = assignedAttribute.IsStiAttribute || announcementType == AnnouncementTypeEnum.Class;
                var attachment     = AttachmentService.Upload(name, bin, isStiAttribute, uow, ServiceLocator, ConnectorLocator);
                assignedAttribute.AttachmentRef = attachment.Id;
                assignedAttribute.Attachment    = attachment;
                da.Update(assignedAttribute);

                if (assignedAttribute.IsStiAttribute)
                {
                    var stiAttribute = ConnectorLocator.ActivityAssignedAttributeConnector.GetAttribute(
                        assignedAttribute.SisActivityId.Value,
                        assignedAttribute.SisActivityAssignedAttributeId.Value);

                    MapperFactory.GetMapper <ActivityAssignedAttribute, AnnouncementAssignedAttribute>().Map(stiAttribute, assignedAttribute);
                    ConnectorLocator.ActivityAssignedAttributeConnector.Update(stiAttribute.ActivityId, stiAttribute.Id, stiAttribute);
                }
                uow.Commit();
                return(assignedAttribute);
            }
        }
Exemplo n.º 24
0
        public AnnouncementQnA Answer(int announcementQnAId, AnnouncementTypeEnum announcementType, string question, string answer)
        {
            Trace.Assert(Context.PersonId.HasValue);

            using (var uow = Update())
            {
                var da     = new AnnouncementQnADataAccess(uow);
                var annQnA = GetAnnouncementQnA(announcementQnAId);
                // todo: think about security
                if (!CanEditQuestion(annQnA, uow))
                {
                    throw new ChalkableSecurityException();
                }

                annQnA.State    = AnnouncementQnAState.Answered;
                annQnA.Question = question;
                if ((BaseSecurity.IsDistrictOrTeacher(Context)) && (!annQnA.AnswererRef.HasValue || annQnA.AnswererRef == Context.PersonId))
                {
                    var answerer = new PersonDataAccess(uow).GetById(Context.PersonId.Value);
                    annQnA.Answerer     = answerer;
                    annQnA.AnswererRef  = answerer.Id;
                    annQnA.AnsweredTime = Context.NowSchoolTime;
                    annQnA.Answer       = answer;
                }
                da.Update(annQnA);
                uow.Commit();
                var  ann = ServiceLocator.GetAnnouncementService(announcementType).GetAnnouncementById(annQnA.AnnouncementRef);
                bool visibleForStudent = (ann is LessonPlan && (ann as LessonPlan).VisibleForStudent) ||
                                         (ann is ClassAnnouncement && (ann as ClassAnnouncement).VisibleForStudent) ||
                                         (ann is AdminAnnouncement);
                if (visibleForStudent)
                {
                    ServiceLocator.NotificationService.AddAnnouncementNotificationAnswerToStudent(annQnA.Id, annQnA.AnnouncementRef, announcementType);
                }
                return(annQnA);
            }
        }
Exemplo n.º 25
0
        private CardColor GetCardColor(AnnouncementTypeEnum type)
        {
            CardColor trump = 0;

            switch (type)
            {
            case AnnouncementTypeEnum.Spades:
                trump = CardColor.Spades;
                break;

            case AnnouncementTypeEnum.Hearts:
                trump = CardColor.Hearts;
                break;

            case AnnouncementTypeEnum.Diamonds:
                trump = CardColor.Diamonds;
                break;

            case AnnouncementTypeEnum.Clubs:
                trump = CardColor.Clubs;
                break;
            }
            return(trump);
        }
Exemplo n.º 26
0
        public AnnouncementAttachment UploadAttachment(int announcementId, AnnouncementTypeEnum type, byte[] content, string name)
        {
            var annDetails = ServiceLocator.GetAnnouncementService(type).GetAnnouncementDetails(announcementId);

            Trace.Assert(Context.PersonId.HasValue);
            Trace.Assert(Context.SchoolLocalId.HasValue);
            if (!CanAttach(annDetails))
            {
                throw new ChalkableSecurityException();
            }

            using (var uow = Update())
            {
                var att    = AttachmentService.Upload(name, content, false, uow, ServiceLocator, ConnectorLocator);
                var annAtt = new AnnouncementAttachment
                {
                    AnnouncementRef = annDetails.Id,
                    AttachedDate    = Context.NowSchoolTime,
                    Order           = ServiceLocator.GetAnnouncementService(type).GetNewAnnouncementItemOrder(annDetails),
                    AttachmentRef   = att.Id,
                };
                var da    = new AnnouncementAttachmentDataAccess(uow);
                var attId = da.InsertWithEntityId(annAtt);
                uow.Commit();
                bool notifyUsers = !annDetails.IsOwner ||
                                   (annDetails.ClassAnnouncementData != null && annDetails.ClassAnnouncementData.VisibleForStudent) ||
                                   (annDetails.LessonPlanData != null && annDetails.LessonPlanData.VisibleForStudent) ||
                                   annDetails.AdminAnnouncementData != null;
                if (notifyUsers)
                {
                    NotifyUsers(annDetails, type);
                }

                return(da.GetById(attId, Context.PersonId.Value, Context.RoleId, true));
            }
        }
Exemplo n.º 27
0
        public Announcement RemoveFromAnnouncement(int announcementAppId, AnnouncementTypeEnum type)
        {
            try
            {
                using (var uow = Update())
                {
                    var da  = new AnnouncementApplicationDataAccess(uow);
                    var aa  = da.GetById(announcementAppId);
                    var res = ServiceLocator.GetAnnouncementService(type).GetAnnouncementById(aa.AnnouncementRef);
                    if (!res.IsOwner && Context.Role != CoreRoles.DISTRICT_ADMIN_ROLE)
                    {
                        throw new ChalkableSecurityException(ChlkResources.ERR_SECURITY_EXCEPTION);
                    }

                    da.Delete(announcementAppId);
                    uow.Commit();
                    return(res);
                }
            }
            catch
            {
                throw new ChalkableException(string.Format(ChlkResources.ERR_CANT_DELETE_ANNOUNCEMENT_APPLICATION, announcementAppId));
            }
        }
Exemplo n.º 28
0
        public void Edit(AnnouncementTypeEnum announcementType, int announcementId, IList <AssignedAttributeInputModel> inputAttributes)
        {
            BaseSecurity.EnsureAdminOrTeacher(Context);
            Trace.Assert(Context.PersonId.HasValue);
            Trace.Assert(Context.SchoolLocalId.HasValue);

            var annoncement = ServiceLocator.GetAnnouncementService(announcementType).GetAnnouncementById(announcementId); // security check

            if (inputAttributes != null)
            {
                DoUpdate(u =>
                {
                    var da = new AnnouncementAssignedAttributeDataAccess(u);
                    var attributesForUpdate = da.GetAttributesByIds(inputAttributes.Select(x => x.Id).ToList());
                    foreach (var attribute in attributesForUpdate)
                    {
                        var inputAttr = inputAttributes.FirstOrDefault(x => x.Id == attribute.Id);
                        if (inputAttr == null)
                        {
                            continue;
                        }
                        attribute.AnnouncementRef    = inputAttr.AnnouncementId;
                        attribute.Name               = inputAttr.Name;
                        attribute.Text               = inputAttr.Text;
                        attribute.VisibleForStudents = inputAttr.VisibleForStudents;
                        attribute.AttributeTypeId    = inputAttr.AttributeTypeId;
                        attribute.AttachmentRef      = inputAttr.AttachmentId;
                    }
                    if (!annoncement.IsDraft)
                    {
                        ValidateAttributes(attributesForUpdate);
                    }
                    da.Update(attributesForUpdate);
                });
            }
        }
Exemplo n.º 29
0
 public AttributeAttachmentContentInfo GetAttributeAttachmentContent(int assignedAttributeId, AnnouncementTypeEnum announcementType)
 {
     throw new System.NotImplementedException();
 }
Exemplo n.º 30
0
        private CardColor GetCardColor( AnnouncementTypeEnum type )
        {
            CardColor trump = 0;

            switch ( type )
            {
                case AnnouncementTypeEnum.Spades:
                    trump = CardColor.Spades;
                    break;
                case AnnouncementTypeEnum.Hearts:
                    trump = CardColor.Hearts;
                    break;
                case AnnouncementTypeEnum.Diamonds:
                    trump = CardColor.Diamonds;
                    break;
                case AnnouncementTypeEnum.Clubs:
                    trump = CardColor.Clubs;
                    break;
            }
            return trump;
        }
Exemplo n.º 31
0
 /// <summary>
 /// Creates a new announcement
 /// </summary>
 public Announcement( AnnouncementTypeEnum type, bool isDoubled, bool isReDoubled )
 {
     _type = type;
     _isDoubled = isDoubled;
     _isReDoubled = isReDoubled;
 }
Exemplo n.º 32
0
        private int CompareTo( AnnouncementTypeEnum type )
        {
            int x = 0, y = 0;

            switch( this._type )
            {
                case AnnouncementTypeEnum.AllTrumps:
                    x = 7;
                    break;
                case AnnouncementTypeEnum.NoTrumps:
                    x = 6;
                    break;
                case AnnouncementTypeEnum.Spades:
                    x = 5;
                    break;
                case AnnouncementTypeEnum.Hearts:
                    x = 4;
                    break;
                case AnnouncementTypeEnum.Diamonds:
                    x = 3;
                    break;
                case AnnouncementTypeEnum.Clubs:
                    x = 2;
                    break;
                case AnnouncementTypeEnum.Pass:
                    x = 1;
                    break;
            }

            switch( type )
            {
                case AnnouncementTypeEnum.AllTrumps:
                    y = 7;
                    break;
                case AnnouncementTypeEnum.NoTrumps:
                    y = 6;
                    break;
                case AnnouncementTypeEnum.Spades:
                    y = 5;
                    break;
                case AnnouncementTypeEnum.Hearts:
                    y = 4;
                    break;
                case AnnouncementTypeEnum.Diamonds:
                    y = 3;
                    break;
                case AnnouncementTypeEnum.Clubs:
                    y = 2;
                    break;
                case AnnouncementTypeEnum.Pass:
                    y = 1;
                    break;
            }

            if( x > y )
                return 1;
            else if( x < y )
                return -1;
            else
                return 0;
        }
        /// <summary>
        /// If announcement made by this player is valid according to game rules
        /// </summary>
        public bool IsValid( Player player, AnnouncementTypeEnum type, bool isDoubled, bool isRedoubled )
        {
            //no player
            if( player == null)
                throw new ArgumentNullException( "Player", "Bidding player cannot be null");

            //legal pass
            if( type == AnnouncementTypeEnum.Pass )
            {
                if( !isDoubled && !isRedoubled )
                    return true;
                else
                    return false;
            }

            if( _lastValidAnnouncement.CompareTo( type ) < 0  && !isDoubled && !isRedoubled )
                return true;

            if( _lastValidAnnouncement.CompareTo( type ) == 0 && !IsLastValidBidByTeam( player ) && !_lastValidAnnouncement.IsReDoubled)
            {
                if( !_lastValidAnnouncement.IsDoubled && isDoubled && !isRedoubled )
                    return true;
                if( _lastValidAnnouncement.IsDoubled && !isDoubled && isRedoubled )
                    return true;
            }

            return false;
        }
 public Announcement Add(int announcementId, AnnouncementTypeEnum type, int attachmentId)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 35
0
 /// <summary>
 /// Constructor for the class. Creates a new CardComparer object.
 /// </summary>
 /// <param name="announcementType"></param>
 public CardComparer( AnnouncementTypeEnum announcementType )
 {
     this._announcementType = announcementType;
     _isComparingCombinations = false;
 }
 public AnnouncementAttachment UploadAttachment(int announcementId, AnnouncementTypeEnum type, byte[] content, string name)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 37
0
 /// <summary>
 /// Constructor for the class. Creates a new CardComparer object.
 /// Compares in such order 7,8,9,10,J,Q,K,A
 /// </summary>
 internal CardComparer(  )
 {
     this._announcementType = AnnouncementTypeEnum.Pass;
     _isComparingCombinations = true;
 }