示例#1
0
        public async Task <IHttpActionResult> PutSalon(int id, SalonForUpdate salon)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != salon.SalonID)
            {
                return(BadRequest());
            }

            Salon salonFromDb = await db.Salons.FindAsync(id);

            salonFromDb.Description             = salon.SalonDescription;
            salonFromDb.SalonName               = salon.SalonName;
            salonFromDb.SiteUrl                 = salon.SiteUrl;
            salonFromDb.VisibleForUsers         = salon.VisibleForUsers;
            salonFromDb.Address.CityID          = salon.CityID;
            salonFromDb.Address.NeighbourhoodID = salon.NeighbourhoodID;
            salonFromDb.Address.Street          = salon.SalonStreet;
            salonFromDb.Address.Flat            = salon.SalonFlat;
            salonFromDb.Address.Number          = salon.SalonNumber;
            salonFromDb.Address.Entrance        = salon.SalonEntrance;
            salonFromDb.Address.Apartment       = salon.SalonApartment;
            Email salonEmail = await db.Emails.Where(x => x.SalonID == id).FirstOrDefaultAsync();

            if (salonEmail != null)
            {
                salonEmail.Email1 = salon.Email;
            }
            else
            {
                salonEmail         = new Email();
                salonEmail.Email1  = salon.Email;
                salonEmail.SalonID = salonFromDb.SalonID;
                db.Emails.Add(salonEmail);
            }

            //телефони

            string[] phones = salon.SalonPhones.Split(',');

            List <Phone> phonesFromDb = await db.Phones.Where(x => x.SalonID == id).ToListAsync();

            db.Phones.RemoveRange(phonesFromDb);

            List <Phone> itemsToAdd = phones.Select(x => new Phone
            {
                Phone1  = x,
                SalonID = id
            }).ToList();

            db.Phones.AddRange(itemsToAdd);
            if (salonFromDb.SalonSchedules.Count == 7)
            {
                int i = 0;
                foreach (var day in salonFromDb.SalonSchedules)
                {
                    day.Holiday   = salon.SalonSchedule[i].Holiday;
                    day.StartTime = salon.SalonSchedule[i].StartTime;
                    day.EndTime   = salon.SalonSchedule[i].EndTime;
                    i++;
                }
            }
            else
            {
                List <SalonSchedule> schedulesToAdd = new List <SalonSchedule>();
                foreach (var day in salon.SalonSchedule)
                {
                    schedulesToAdd.Add(new SalonSchedule
                    {
                        DayOfWeek = day.DayOfWeek,
                        EndTime   = day.EndTime,
                        StartTime = day.StartTime,
                        Holiday   = day.Holiday,
                        SalonID   = id
                    });
                }

                salonFromDb.SalonSchedules = schedulesToAdd;
            }

            db.Entry(salonFromDb).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!SalonExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
示例#2
0
        public async Task <IHttpActionResult> PostSalon(SalonForUpdate salon)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Salon newSalon = new Salon();

            newSalon.AddedOn                 = DateTime.Now;
            newSalon.Address                 = new Address();
            newSalon.Address.AddressType     = 2;
            newSalon.Address.Apartment       = salon.SalonApartment;
            newSalon.Address.CityID          = salon.CityID;
            newSalon.Address.Entrance        = salon.SalonEntrance;
            newSalon.Address.Flat            = salon.SalonFlat;
            newSalon.Address.NeighbourhoodID = salon.NeighbourhoodID;
            newSalon.Address.Number          = salon.SalonNumber;
            newSalon.Address.Street          = salon.SalonStreet;
            newSalon.CompanyID               = await db.Companies.Where(x => x.CreateBy.ToUpper() == salon.Username)
                                               .Select(x => x.CompanyID).FirstOrDefaultAsync();

            newSalon.CreateBy        = salon.Username;
            newSalon.Description     = salon.SalonDescription;
            newSalon.SalonName       = salon.SalonName;
            newSalon.SiteUrl         = salon.SiteUrl;
            newSalon.VisibleForUsers = salon.VisibleForUsers;
            newSalon.IsDeleted       = false;

            List <Email> emails = new List <Email>();

            emails.Add(new Email
            {
                Email1 = salon.Email
            });
            newSalon.Emails = emails;
            string[]     phones     = salon.SalonPhones.Split(',');
            List <Phone> itemsToAdd = phones.Select(x => new Phone
            {
                Phone1 = x
            }).ToList();

            newSalon.Phones = itemsToAdd;

            List <SalonSchedule> schedulesToAdd = new List <SalonSchedule>();

            foreach (var day in salon.SalonSchedule)
            {
                schedulesToAdd.Add(new SalonSchedule
                {
                    DayOfWeek = day.DayOfWeek,
                    EndTime   = day.EndTime,
                    StartTime = day.StartTime,
                    Holiday   = day.Holiday
                });
            }

            newSalon.SalonSchedules = schedulesToAdd;

            db.Salons.Add(newSalon);
            await db.SaveChangesAsync();

            List <Salon> salonForReturn = new List <Salon>();

            salonForReturn.Add(newSalon);

            var salonForRet = salonForReturn.Select(x => new
            {
                SalonID         = x.SalonID,
                SalonName       = x.SalonName,
                CityID          = x.Address.CityID,
                NeighbourhoodID = x.Address.NeighbourhoodID,
                Neighbourhoods  = db.Neighbourhoods.Where(z => z.CityID == x.Address.CityID).Select(z => new
                {
                    NeighbourhoodID   = z.NeighbourhoodID,
                    NeighbourhoodName = z.NeighbourhoodName
                }),
                SalonStreet      = x.Address.Street,
                SalonFlat        = x.Address.Flat,
                SalonEntrance    = x.Address.Entrance,
                SalonNumber      = x.Address.Number,
                SalonApartment   = x.Address.Apartment,
                SiteUrl          = x.SiteUrl,
                Email            = x.Emails.Where(z => z.SalonID == x.SalonID).Select(z => z.Email1).FirstOrDefault(),
                SalonDescription = x.Description,
                VisibleForUsers  = x.VisibleForUsers,
                SalonPhones      = x.Phones.Select(z => z.Phone1),
                SalonSchedule    = x.SalonSchedules.Where(z =>
                                                          !z.Date.HasValue).Select(z => new
                {
                    Date       = z.Date,
                    DayOfWeek  = z.DayOfWeek,
                    EndTime    = z.EndTime,
                    StartTime  = z.StartTime,
                    Holiday    = z.Holiday,
                    SalonID    = z.SalonID,
                    ScheduleID = z.ScheduleID
                }).OrderBy(z => z.DayOfWeek),
                SalonImages = x.SalonImages.Where(z => !z.IsDeleted).Select(z => new
                {
                    ImageID   = z.ImageID,
                    ImagePath = z.ImagePath,
                    ImageName = z.ImageName,
                    IsMain    = z.IsMain
                })
            }).FirstOrDefault();

            return(CreatedAtRoute("DefaultApi", new { id = newSalon.SalonID }, salonForRet));
        }