public ApiResponse GetById(Guid Id)
        {
            UnitContact unitContact = null;

            unitContact = _faciTechDbContext
                          .UnitContact
                          .Where(e => e.UnitId == Id && e.IsOwner == true && e.IsPrimaryContact == true)
                          .Include(e => e.Unit)
                          .Include(e => e.Unit.Section)
                          .Include(e => e.Contact)
                          .FirstOrDefault();

            if (unitContact == null)
            {
                var unit = _faciTechDbContext
                           .Unit
                           .Include(e => e.Section)
                           .Where(e => e.Id == Id)
                           .FirstOrDefault();

                if (unit == null)
                {
                    return(NotExistsResponse("Unit"));
                }
                unitContact = new UnitContact()
                {
                    Unit = unit
                };
            }
            return(new ApiResponse(unitContact));
        }
        public UnitApiModel MapGet(UnitContact unitContact)
        {
            var unit  = unitContact.Unit;
            var owner = unitContact.Contact;

            UnitApiModel unitApiModel = new UnitApiModel()
            {
                Number         = unit.Number,
                FloorNumber    = unit.FloorNumber,
                Id             = unit.Id,
                Name           = unit.Number,
                UnitType       = unit.UnitType,
                Specification  = unit.Specification,
                Area           = unit.Area,
                SectionId      = unit.Section.Id.ToString(),
                SectionName    = unit.Section.Name,
                OwnerLivesHere = unitContact.LivesHere
            };

            if (owner != null)
            {
                unitApiModel.Owner = new ContactApiModel()
                {
                    Id          = owner.Id,
                    Email       = owner.Email,
                    FirstName   = owner.FirstName,
                    LastName    = owner.LastName,
                    MobilePhone = owner.MobilePhone,
                };
            }
            return(unitApiModel);
        }
        public ApiResponse Update(UnitContact unitContact)
        {
            var validationError = ValidateUpdate(unitContact.Unit);

            if (validationError.Count > 0)
            {
                return(new ApiResponse(validationError));
            }
            //New Owner
            if (unitContact.Contact.Id == Guid.Empty)
            {
                unitContact.Contact.Id = Guid.NewGuid();
                _faciTechDbContext.Contact.Add(unitContact.Contact);
            }
            //Link doesnt exists
            if (unitContact.Id == Guid.Empty)
            {
                unitContact.Id = Guid.NewGuid();
                _faciTechDbContext.UnitContact.Add(unitContact);
            }
            //If contact is new, something to be done for the existing contact.

            //Link Unit and Contact
            unitContact.ContactId = unitContact.Contact.Id;
            unitContact.UnitId    = unitContact.Unit.Id;

            _faciTechDbContext.SaveChanges();
            return(new ApiResponse(validationError));
        }
Exemple #4
0
        public ActionResult Put(Guid communitId, Guid id, [FromBody] UnitApiModel unitApiModel)
        {
            try
            {
                ApiResponse unitServiceResponse = this._unitService.GetById(id);
                if (unitServiceResponse.IsSuccess() == false)
                {
                    return(new ObjectNotFoundResult(unitServiceResponse));
                }

                var contactServiceResponse = this._contactService.GetById(unitApiModel.Owner.Id.Value);
                if (unitServiceResponse.IsSuccess() == false)
                {
                    return(new ObjectNotFoundResult(unitServiceResponse));
                }

                UnitContact unitContact = unitServiceResponse.GetData <UnitContact>();
                Contact     contact     = contactServiceResponse.GetData <Contact>();
                unitContact.Contact = contact;
                this._unitMapper.MapUpdate(unitContact, unitApiModel);
                this._unitService.Update(unitContact);
                if (unitServiceResponse.IsSuccess())
                {
                    return(new ObjectUpdatedResult(unitServiceResponse.Id.Value));
                }
                else
                {
                    return(new ValidationErrorResult(unitServiceResponse));
                }
            }
            catch (Exception ex)
            {
                return(new UnknownErrorResult(ex, base._errorEnabled));
            }
        }
        public UnitContact Map(UnitMemberApiModel unitMemberApiModel)
        {
            UnitContact unitContact = new UnitContact()
            {
                UnitId = unitMemberApiModel.UnitId
            };

            if (unitMemberApiModel.ContactId.HasValue == false)
            {
                unitContact.Contact = new Contact()
                {
                    FirstName   = unitMemberApiModel.Contact.FirstName,
                    LastName    = unitMemberApiModel.Contact.LastName,
                    Email       = unitMemberApiModel.Contact.Email,
                    MobilePhone = unitMemberApiModel.Contact.MobilePhone
                };
                unitContact.ContactId = Guid.Empty;
            }
            else
            {
                unitContact.ContactId = unitMemberApiModel.ContactId.Value;
                unitContact.Contact   = null;
            }
            return(unitContact);
        }
        public ApiResponse Create(UnitContact unitContactDto)
        {
            var unit    = unitContactDto.Unit;
            var contact = unitContactDto.Contact;

            var validationError = ValidateCreate(unit);

            if (validationError.Count > 0)
            {
                return(new ApiResponse(validationError));
            }

            if (contact.Id == Guid.Empty)
            {
                contact.Id = Guid.NewGuid();
                _faciTechDbContext.Contact.Add(contact);
            }

            unit.Id      = Guid.NewGuid();
            unit.OwnerId = contact.Id;
            _faciTechDbContext.Unit.Add(unit);

            UnitContact unitContact = new UnitContact();

            unitContact.ContactId = contact.Id;
            unitContact.UnitId    = unit.Id;
            unitContact.Id        = Guid.NewGuid();

            _faciTechDbContext.UnitContact.Add(unitContact);        //Link Unit and Contact
            _faciTechDbContext.SaveChanges();
            return(new ApiResponse(new { Id = unit.Id }));
        }
Exemple #7
0
        public ActionResult Update(Guid id, UnitContactApiModel unitContactApiModel)
        {
            try
            {
                ApiResponse serviceResponse = this._unitContactService.GetSingle(id);
                if (serviceResponse.IsSuccess() == false)
                {
                    return(new ObjectNotFoundResult(serviceResponse));
                }

                UnitContact unitContact = serviceResponse.GetData <UnitContact>();
                _unitContactMapper.Map(unitContactApiModel, unitContact);
                serviceResponse = this._unitContactService.Update(unitContact);

                if (serviceResponse.IsSuccess())
                {
                    return(new ObjectUpdatedResult(serviceResponse.Id.Value));
                }
                {
                    return(new ValidationErrorResult(serviceResponse));
                }
            }
            catch (Exception ex)
            {
                return(new UnknownErrorResult(ex, base._errorEnabled));
            }
        }
        public ApiResponse Update(UnitContact unitContact)
        {
            var validationError = ValidateCreateUpdate(unitContact);

            if (validationError.Count() == 0)
            {
                _faciTechDbContext.SaveChanges();
                return(new ApiResponse(new { Id = unitContact.Id }, ApiStatus.Success));
            }
            return(new ApiResponse(validationError));
        }
 public UnitContactApiModel Map(UnitContact unitContact, UnitContactApiModel unitContactApiModel)
 {
     unitContactApiModel.Id               = unitContact.Id;
     unitContactApiModel.ContactId        = unitContact.ContactId;
     unitContactApiModel.UnitId           = unitContact.UnitId;
     unitContactApiModel.UnitNumber       = unitContact.Unit.FullName;
     unitContactApiModel.IsDoctor         = unitContact.IsDoctor;
     unitContactApiModel.IsOwner          = unitContact.IsOwner;
     unitContactApiModel.IsPrimaryContact = unitContact.IsPrimaryContact;
     unitContactApiModel.LivesHere        = unitContact.LivesHere;
     return(unitContactApiModel);
 }
Exemple #10
0
        public ActionResult Get(Guid communityId, Guid unitId)
        {
            var serviceResponse = this._unitService.GetById(unitId);

            if (serviceResponse.IsError())
            {
                return(new ObjectNotFoundResult(serviceResponse));
            }
            UnitContact unitContact  = serviceResponse.GetData <UnitContact>();
            var         unitApiModel = this._unitMapper.MapGet(unitContact);

            return(new ObjectFoundResult(new ApiResponse(unitApiModel)));
        }
 public UnitContact Map(UnitContactApiModel unitContactApiModel, UnitContact unitContact = null)
 {
     if (unitContact == null)
     {
         unitContact = new UnitContact();
     }
     unitContact.ContactId        = unitContactApiModel.ContactId.Value;
     unitContact.UnitId           = unitContactApiModel.UnitId.Value;
     unitContact.IsPrimaryContact = unitContactApiModel.IsPrimaryContact.Value;
     unitContact.IsOwner          = unitContactApiModel.IsOwner.Value;
     unitContact.LivesHere        = unitContactApiModel.LivesHere.Value;
     return(unitContact);
 }
Exemple #12
0
 public ActionResult GetSingle(Guid id)
 {
     try
     {
         ApiResponse apiResponse = this._unitContactService.GetSingle(id);
         UnitContact unitContact = apiResponse.GetData <UnitContact>();
         var         result      = _unitContactMapper.Map(unitContact, new UnitContactApiModel());
         return(Ok(result));
     }
     catch (Exception ex)
     {
         return(new UnknownErrorResult(ex, base._errorEnabled));
     }
 }
        public void MapUpdate(UnitContact unitContact, UnitApiModel unitApiModel)
        {
            var ownerId = unitApiModel.Owner.Id.HasValue? unitApiModel.Owner.Id.Value:Guid.Empty;
            var id      = unitContact.Id;

            _mapper.Map(unitApiModel, unitContact.Unit);
            _mapper.Map(unitApiModel.Owner, unitContact.Contact);
            unitContact.Id = id;
            //unitContact.Contact.Id = ownerId;
            unitContact.ContactId        = ownerId;
            unitContact.IsPrimaryContact = true;
            unitContact.IsOwner          = true;
            unitContact.LivesHere        = unitApiModel.OwnerLivesHere;
        }
        public List <ErrorInfo> ValidateCreateUpdate(UnitContact unitContact)
        {
            List <ErrorInfo> errorInfos = new List <ErrorInfo>();
            var nameCount = _faciTechDbContext.UnitContact.Count(e => e.UnitId == unitContact.UnitId &&
                                                                 e.ContactId == unitContact.ContactId &&
                                                                 e.Id != unitContact.Id);

            if (nameCount != 0)
            {
                errorInfos.Add(new ErrorInfo()
                {
                    Key = "unitId", Code = "UNIQUE_VIOLATION_ERROR", Description = "Unit number has to be unique"
                });
            }
            return(errorInfos);
        }
        public ApiResponse AddMember(Guid unitId, UnitContact unitContact)
        {
            var  unit = _faciTechDbContext.Unit.Where(e => e.Id == unitId).FirstOrDefault();
            Guid contactId;

            if (unitContact.ContactId == Guid.Empty && unitContact.Contact != null)
            {
                contactId = Guid.NewGuid();
                unitContact.Contact.Id          = contactId;
                unitContact.ContactId           = contactId;
                unitContact.Contact.CommunityId = unit.CommunityId;
                _faciTechDbContext.Contact.Add(unitContact.Contact);
            }
            unitContact.Id = Guid.NewGuid();
            _faciTechDbContext.UnitContact.Add(unitContact);
            _faciTechDbContext.SaveChanges();
            return(new ApiResponse(new { Id = unitContact.Id }, ApiStatus.Success));
        }
        public UnitContact MapCreateOrUpdate(UnitApiModel unitApiModel, Guid communityId)
        {
            UnitContact unitContact = new UnitContact()
            {
                Contact = new Contact(), Unit = new Unit()
            };

            unitContact.Unit.UnitContacts = new List <UnitContact>();
            unitContact.Unit.UnitContacts.Add(unitContact);

            _mapper.Map(unitApiModel, unitContact.Unit);
            _mapper.Map(unitApiModel.Owner, unitContact.Contact);
            unitContact.IsPrimaryContact    = true;
            unitContact.IsOwner             = true;
            unitContact.LivesHere           = unitApiModel.OwnerLivesHere;
            unitContact.Unit.CommunityId    = communityId;
            unitContact.Contact.CommunityId = communityId;
            return(unitContact);
        }
        private void SavePeople(JArray rowsJArray)
        {
            var contactService = CreateService <ContactService>();
            List <UnitContact> unitContacts = new List <UnitContact>();

            foreach (JObject jObject in rowsJArray)
            {
                if (jObject["Status"].ToString() != "Error")
                {
                    Guid        unitId      = Guid.Parse(jObject["Unit.NumberId"].ToString());
                    UnitContact unitContact = new UnitContact();
                    unitContact.UnitId  = unitId;
                    unitContact.Contact = new Contact();
                    SetValues(jObject, unitContact);
                    unitContact.IsPrimaryContact = true;
                    unitContacts.Add(unitContact);
                }
            }
            contactService.BulkSave(unitContacts, this.communityId);
        }
Exemple #18
0
        public void BulkSave(List <UnitContact> unitContacts, Guid communityId)
        {
            var contactsTask = _faciTechDbContext
                               .UnitContact
                               .Where(e => e.Unit.CommunityId == communityId)
                               .Select(e => e.Contact)
                               .ToListAsync();
            var unitContactTask = _faciTechDbContext.UnitContact
                                  .Where(e => e.Unit.CommunityId == communityId)
                                  .ToListAsync();

            var unitTask = _faciTechDbContext.Unit
                           .Where(e => e.CommunityId == communityId)
                           .ToListAsync();

            Task.WaitAll(contactsTask, unitContactTask, unitTask);

            var dbContacts     = contactsTask.Result;
            var dbUnitContacts = unitContactTask.Result;
            var dbUnits        = unitTask.Result;

            foreach (var unitContact in unitContacts)
            {
                var isContactAdd     = false;
                var isUnitContactAdd = false;

                var dbContact = dbContacts.Where(e => e.FirstName == unitContact.Contact.FirstName &&
                                                 e.LastName == unitContact.Contact.LastName &&
                                                 (e.Email == unitContact.Contact.Email ||
                                                  e.Phone == unitContact.Contact.Phone)).FirstOrDefault();

                User dbUser = null;
                if (dbContact == null)
                {
                    isContactAdd = true;
                    dbContact    = new Contact()
                    {
                        Id = Guid.NewGuid()
                    };
                    dbUser = RegisterInitialCredentials(unitContact.Contact.Email, dbContact.Id);
                }

                var dbUnitContact = dbUnitContacts
                                    .Where(e => e.UnitId == unitContact.UnitId && e.ContactId == dbContact.Id)
                                    .FirstOrDefault();

                var dbUnit = dbUnits.Where(e => e.Id == unitContact.UnitId).FirstOrDefault();

                if (dbUnitContact == null)
                {
                    isUnitContactAdd = true;
                    dbUnitContact    = new UnitContact()
                    {
                        Id = Guid.NewGuid()
                    };
                }

                dbContact.FirstName   = unitContact.Contact.FirstName;
                dbContact.LastName    = unitContact.Contact.LastName;
                dbContact.Email       = unitContact.Contact.Email;
                dbContact.MobilePhone = unitContact.Contact.MobilePhone;
                dbContact.CommunityId = communityId;

                dbUnitContact.UnitId           = unitContact.UnitId;
                dbUnitContact.IsDoctor         = unitContact.IsDoctor;
                dbUnitContact.IsOwner          = unitContact.IsOwner;
                dbUnitContact.IsPrimaryContact = unitContact.IsPrimaryContact;
                dbUnitContact.ContactId        = dbContact.Id;

                if (isContactAdd)
                {
                    dbContacts.Add(dbContact);
                    _faciTechDbContext.Add(dbContact);
                    _faciTechDbContext.Add(dbUser);
                }
                if (isUnitContactAdd)
                {
                    dbUnitContacts.Add(dbUnitContact);
                    _faciTechDbContext.Add(dbUnitContact);
                }
                if (dbUnitContact.IsOwner)
                {
                    dbUnit.OwnerId = dbUnitContact.ContactId;
                }
            }
            _faciTechDbContext.SaveChanges();
        }